方法重寫和方法重載的區別?方法重載能改變返回值類型嗎?
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();
}
}
你get到了嗎?