涵盖(重写) java中继承、方法override和方法重载overload之间的差异
方法重写(Overriding )和过载(Overriding )是Java多态性的不同表现。
重写(Overriding )是父类和子类之间的多态表示,而重载(Overriding )是类中的多态表示。
在子类中定义方法后,如果其名称和参数与其父类相同,则方法将被重写。 当子类中的对象使用此方法时,将调用子类中的定义,而父类中的定义就像被屏蔽了一样。
如果类中定义了多个同名方法,并且它们具有不同的参数数量、不同的参数类型或具有不同的参数顺序,则称为方法重载(Overloading ) 不能通过权限、返回类型或抛出的异常进行重载。
Override特征1、覆盖方法标识必须与覆盖方法标识完全匹配才能达到覆盖效果
2、复盖方法的返回值必须与复盖方法的返回值一致
3、复盖方法的慢异常,必须与复盖方法的慢异常匹配或其子类别
4、方法定义为final不可重写。
5、对于继承,如果某个方法在父类中权限为private,则不能在子类中重写。 如果定义了,则只是定义了新的方法,没有复盖、复盖的效果。 它通常存在于父类和子类之间。 )
6、子类重写父类方法时,修饰语不能小于父类; (publicprotectedprivate )
2.Overload的特点
1 .使用重载时,只能用不同的参数样式。 例如,不同的参数类型、不同的参数数量、不同的参数顺序(当然,同一方法中的某些参数类型需要不同)。 例如,它可以是fun (整数,浮点),但不能是fun (整数,整数)。 );
2、访问权限、返回类型、抛出的异常无法重载
3、方法的异常类型和数量不影响重载;
4、超载事件通常发生在同一个班级内,是不同方法之间的现象。
5、虽然存在于同一个班级,但只写了虚方法和抽象方法。
其具体实现机制:
overload是过载,过载是参数多态性机制,是代码通过参数类型和个数实现的多态性机制。 是一种静态绑定机制。 在编译过程中,您知道具体正在执行哪些代码段。
override是重写,重写是动态绑定的多态性机制。 这意味着父类和子类中同名的元素(如成员函数)具有不同的实现代码。 哪些代码正在运行取决于运行时的实际情况。
Overrride实例:
class A{
公共获取
返回(5;
}
}
class B extends A{
公共获取
返回(10;
}
}
公共类概述{
publicstaticvoidmain (string [ ] args ) {
B b=new B (;
a=(a ) b; 将//B强制转换为a类型
int x=a.getVal (;
system.out.println(x;
}
}
结果: 10
Overload实例:
公共类测试{
公共void save (inta ) {
}
公共void save (inta,int b ) {
}
}
请注意以下示例:
class Father {
公共void foo (objecto ) {
system.out.println(「Father.foo”);
}
}
class Son extends Father{
公共void foo (strings ) {
system.out.println(「son.foo”);
}
}
public class Main {
publicstaticvoidmain (string [ ] args ) {
Son son=new Son (;
son.foo(newobject ) );
}
}
结果:
1
Father.foo (
这里需要注意的是,这里不称为方法重载,方法重载只能发生在同一个类中。 亲子类中方法名相同,但参数不同,原则上这也属于两种不同的方法。