繼承
繼承的作用:
繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行爲,並能擴展新的能力。
實現語法:
public class Father {
final String flag = "zhang";
public Father() {
System.out.println("構造Father");
}
public void run() {
System.out.println("father run");
}
}
public class Son extends Father {
final String flag = "lin";
public Son() {
System.out.println("構造Son");
}
public void run() {
System.out.println("son run");
}
}
public class GrandSon extends Son{
final String flag = "wang";
public GrandSon() {
System.out.println("構造GrandSon");
}
public void run() {
System.out.println("grandson run");
}
public static void main(String[] args) {
//強轉運行時出錯
//Son son = (Son) new Father();
Son son = new Son();
System.out.println(son.flag);
//構造Father
//構造Son
//lin
Father father = new Son();
System.out.println(father.flag);
father.run();
//構造Father
//構造Son
//zhang
//son run
Father father2 = new GrandSon();
System.out.println(father2.flag);
father2.run();
//構造Father
//構造Son
//構造GrandSon
//zhang
//grandson run
}
}
繼承的一些規則:
1.關於構造
如果不想調用父類的默認構造方法,則需在子類的構造方法中使用super(父類構造方法參數);
2.重寫
重寫後的方法不能比被重寫的方法有更嚴格的訪問權限(可以相同)
重寫後的方法不能比重寫的方法產生更多的例外
3.super
訪問父類被隱藏的成員變量,如:super.variable;調用父類中被重寫的方法,如:super.Method([paramlist]);
調用父類的構造函數, 如:super([paramlist]);
4.多層繼承
不支持多繼承,但支持多層繼承注意,在多成繼承的情況下,從頂層開始繼承,也就是構造方法調用順序
從最頂層開始,所以一般要關注最底層的,因爲他如果最後一次重寫方法
則以他爲主
5.繼承範圍
同一個包中 | 不同包中的子類 | |
private | ||
default | ★ | |
protected | ★ | ★ |
public | ★ | ★ |
6.其他
多態
多態是什麼
當使用多態方式調用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;
類型轉換
1.向上轉型
2.向下轉型
Son son = (Son)father;//這樣才能調用子類的方法
son.sing();