方法重写和方法重载的区别?方法重载能改变返回值类型吗?
A:Override方法重写和Overload方法重载的区别?
Overload是否可以改变返回值类型?可以
方法重写
• 子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写。
• 使用特点:
• 如果方法名不同,就调用对应的方法
• 如果方法名相同,最终使用的是子类自己的
父类方法重写格式:super.父类成员方法名
• 方法重写的注意事项
父类中私有方法不能被重写
子类重写父类方法时,访问权限不能更低(最好一致都是public)
父类静态方法,子类也必须通过静态方法进行重写。
方法重载
方法重载:本类出现的类名相同,参数列表不同的方法,与返回值无关。
B:this和super的区别和各自的作用?
this代表本类的对象引用,super代表父类的空间标识。可以理解为父类的引用,通过这个可以访问父类成员。
场景:
成员变量:
this.成员变量
super.成员变量
构造方法:
this(…)
super(…)
成员方法:
this.成员方法
super.成员方法
面试题:看程序写结果
虽然子类中构造方法默认有一个super();
初始化的时候,不是按照那个顺序执行的。
而是按照分层初始化进行的。
它仅仅要表示先初始化父类数据,在初始化子类数据。
结果:
YXYZ
class X {
Y b = new Y();
X() {
System.out.print("X");②
}
}
class Y {
Y() {
System.out.print("Y");①
}
}
public class Z extends X (先初始化继承){
Y y = new Y();③
Z() {
//super
System.out.print("Z");④
}
public static void main(String[] args) {
new Z();