金科物业企业资质证书:重写与重载的区别
来源:百度文库 编辑:中财网 时间:2024/10/05 12:06:39
重写与重载的区别
方法重载,就是在一个类中有好几个方法,它们的方法名都一样,但参数不一样,返回的值也可以一样。java的重写,是指在子类中对父类的某方法进行重新定义,其子类的该方法名以及参数位置和个数均与父类相同,从而在调用子类的该方法时,不会执行父类的方法.如果在父类中以final定义的方法,在子类中无法重写.
重写的主要优点是能够定义某个子类特有的特征:
如:
public class Father
{
public void speak()
{
System.out.println("Father");
}
}
public class Son extends Father
{
public void speak()
{
System.out.println("son");
}
}
这也叫做多态性,重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法,
当上例中 Father类 speak()方法被private时,Son类不能重写 Father类 speak()方法,此时Son类 speak()方法相当与在Son类中定义的一个speak()方法.
Father类 speak()方法一但被final时,无论该方法被public,protected及默认所修饰时,Son类根本不能重写 Father类 speak()方法,试图编译代码时,编译器会报错.例:
public class Father
{
fianl public void speak()
{
System.out.println("Father");
}
}
public class Son extends Father
{
public void speak()
{
System.out.println("son");
}
}//编译器会报错.
Father类 speak()方法被时默认修饰时,只能在同一包中,被其子类被重些,如果不在同一包则不能重写.
Father类 speak()方法被时protoeted时,不仅在同一包中,被其子类被重些,还可以不同包的子类重写.
重写方法的规则:
1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常.例如,
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常.
而重载的规则:
1.必须具有不同的参数列表;
2.可以有不同的返回类型,只要参数列表不同就可以了;
3.可以有不同的访问修饰符;
4.可以抛出不同的异常;
重写和重载的区别在于:
重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值.
用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般
重写,重载有什么区别
重载与多态的联系和区别是什么?
C++:区别覆盖,重载与多态
函数重载和函数覆盖的区别
方法的重载、覆盖是什么?它们有什么区别?
请问多态 函数的重载有什么区别?还有函数的重载和函数模板有什么区别??
cdrw:快速擦除可重写光盘与完全快速擦除可重写光盘对光驱的负荷有什么不同?
java的重载实例?
重载的问题?
sql server2000里的重写和追加数据有什么区别
谁知道“重载”的含义啊?
急急!!!explorer 重载与开机假死
一列进站后的重载列车,车头与各节车厢的质量相等。均为m.
关于c++中重载的问题
VC++运算符重载的问题
有关运算符重载的问题
如何重写128MB优盘的分区表
怎么重写SIGEMATEL的固件
跟随例子而且重写下列的句子
怎么擦除不可重写的光盘?
JAVA中的父类与子类(重写)
一个关于重载运算符的的问题?
在C#中如何重载enum类型的CompareTo()方法?
覆写(Override)和重载(Overload)的比较