请问在现实多态过程中继承(override)和承载(overlod)有什么区别?
请问在现实多态过程中继承(override)和承载(overlod)有什么区别?
------解决方案--------------------overlod是父类方法的重载,方法名称一致,但参数序列或类型不一致
override是父类方法的覆盖,方法名称一致,参数序列和类型完全一致,使用时只调用本类方法,即是覆盖了父类的方法
------解决方案--------------------override是子类与父类间的多态,也叫运行时多态;
overload是同一个类中的多态,也叫编译时多态。
------解决方案--------------------首先我们必须得把概念搞清楚, 方法的覆盖(override)是发生在子类和父类之间,子类的方法和父类具有相同的方法(方法名相同,参数相同,返回类型相同,子类中方法的访问权限只能相等或扩大,如果有
异常抛出,异常的类型只能相同或越来越详细)。方法的重载(overload)发生在同一个类中,这些方法具有相同的名字,但参数的类型一定要不一样。
public class A {
private void a(int i, int j) throws Exception {...}
protected void b(String s) {...}
}
class B extends A {
protected void a(int i, int j) throws
IOException {...}
public void b(String s) {...}
public void b(String s, int j){...}
}
B中的a方法和第一个b方法覆盖了A中的a, b方法,B中的第b方法有两种定义方式,所以它被重载了。
------解决方案--------------------方法覆盖时方法名相同,参数的个数与数据类型一一对应。
方法重载时方法名相同,依据参数的个数和数据类型的不同来区分每个方法。
------解决方案--------------------override 父子类之间,参数,返回值都相同
overload 同一个类之间,参数不同
------解决方案--------------------Tarena_Teacher() 说的是对的
------解决方案--------------------(override)叫做方法重载,是发生在子类和父类之间,子类的方法和父类具有相同的方法(方法名相同,参数相同,返回类型相同,如果返回类型是引用型的话可以不同但是重载的方法的返回类型必须是被重载方法返回类型的子类.子类中方法的访问权限只能相等或扩大,如果有异常抛出,异常的类型只能相同或越来越详细)。另外同一个类中不允许有重载方法.还有重载的方法的修饰付范围一定要比被重载方法的修饰符范围大.(如父类方法为protect,子类重载方法就要是public),还有静态类必须重载为静态类,非静态类必须重载为非静态类.重载从根本意义上来说是重新定义了一个方法的实体.(overload)叫做方法过载,发生在同一个类中,这些方法具有相同的名字,但参数的类型一定要不一样。过载从根本的意义上来说就是重新定义了一个名字相同的方法,是一个新的方法~~~
------解决方案--------------------重载 是在一个类里的同名方法发生的.方法的参数列表不同.
重写 是在两个类里(并且着两个类存在继承关系)的同名方法(方法的名称相同,参数列表必须相同)
参数列表不同是指:参数的类型不同,参数的个数不同,参数的顺序不同.