黃階低級 - 《 Java 核心》- 5.1 類、超類和子類 - 修改0次

1、類、超類和子類

is-a 關係是繼承的一個明顯特徵

經理有普通僱員沒有的屬性,比如項目獎金,因此需要新建一個 Manager 類。但是,如果他是經理,那麼他一定是僱員。

下面是繼承 Employee 類來定義 Manager 類的格式,關鍵詞 extends 表示繼承:

public class Manager extends Employee {

    public Manager(int _age) {
        super(_age);
        // 因爲 Employee 沒有僅僅使用默認的構造方法,所以這裏也要寫明,不然會編譯錯誤
    }

}

在 Java 中,所有的繼承都是公有繼承,沒有 C++ 的私有繼承和保護繼承。

父類和子類是青出於藍更勝藍的關係,子類比父類擁有更多的功能,也封裝了更多的數據。

繼承是一般到特殊、抽象到具體的漸變。

子類是父類的子集,例如經理集合是僱員集合的子集,至於是不是真子集,現在還不懂。-_-

子類可以使用父類的方法,反之不行,如果子類與父類有相同的方法需求但是實現不同,可以使用覆蓋 override 來達到這個目的,比如經理和普通僱員的薪水計算方法不同。

至於子類能不能訪問父類的私有域,這個又要看一下訪問權限了:

作用域 當前類 同一個包 子類 其他包
private ✔️
default ( friendly ) ✔️ ✔️
protect ✔️ ✔️ ✔️
public ✔️ ✔️ ✔️ ✔️

所以現在一目瞭然了,子類只能訪問修飾符爲 protect 和 public 的父類的域。如果子類的確需要訪問私有域,就要藉助有公有接口。

注意:子類只能修改或者增加父類的方法,但不能刪除父類中的任何域和方法。

2、this 和 super 的區別

根本區別: this 是對當前對象的引用,而 super 不是,super 只是一個指示編譯器調用超類方法的一個關鍵字。

使用區別:

關鍵字 作用1 作用2
this 引用隱式參數 調用該類的其他構造器
super 調用超類的方法 調用超類的構造器

好吧,這一節內容太多了,可能要拆成三篇來記。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章