Head First Java學習筆記(7):繼承與多型

milesWangzZ發表於2020-11-22

繼承

子類繼承父類: 子類繼承了父類的成員,即父類的例項變數和方法。子類可以重寫繼承下來的父類的方法,也可以加入自己的例項變數和方法。
設計繼承樹: ①找出具有共同屬性和行為的物件。
②設計代表共同狀態與行為的類。
③決定子類是否需要讓某項行為(也就是方法的實現)有特定不同的運作方式。
④通過尋找使用共同行為的子類來找出更多抽象化的機會。
⑤完成類的繼承層次。
方法呼叫: 當呼叫物件引用的方法時,最低階的會勝出。即JVM會從層次樹最下方開始找起,並往上尋找直到找到為止。
IS-A與HAS-A: IS-A:判斷類之間是否有繼承關係;
HAS-A:包含關係。
super: 用於子類中引用父類的方法並加上額外行為。

public void roam() {
    super,roam();//先執行super版的roam(),再執行自定義的行為
    //my own roam stuff
}

許可權: 父類可以通過存取許可權決定子類是否能繼承某些成員。
public型別的成員會被繼承;
private型別的成員不會被繼承。
繼承的意義: ①繼承避免了重複的程式碼。
②繼承定義出共同的協議。

多型

1.運用多型時,引用型別可以是實際物件型別的父類,即子類的物件可以賦值給父類的變數。
2.引數和返回型別也可以多型。

//多型變數
1.Java的物件變數是多型的,它們能儲存不止一種型別的物件。
2.它們可以儲存的是宣告型別的物件,或宣告型別的子類的物件。
3.當把子類的物件賦給父類的變數的時候,就發生了向上造型。

final修飾符:修飾類時表示是繼承樹的末端,類不能再被繼承。修飾方法時可以防止該方法被覆蓋。

覆蓋

1.引數必須要一樣,且返回型別必須要相容。
2.不能降低方法的存取許可權。

方法過載

過載即方法名稱相同,但引數不同。
1.返回型別可以不同。
2.不能只改變返回型別。
3.可以更改存取許可權。

相關文章