繼承

1.超類

java中所有的類都繼承與超類Object類

2. super關鍵字

super關鍵字可以調用父類的方法,但是super不是一個對象的引用,不能將super賦給另一個對象變量,它只是一個指示編譯器調用父類方法的特殊關鍵字。

3.子類構造器

當子類繼承於父類後,若父類中顯示定義了帶有參數的構造器,則子類必須在構造器中使用super()方法調用父類的構造器來初始化父類的私有域。並且super調用構造器的語句必須是子類構造器的第一條語句。
class Employee(){
    private int id;
    Employee(int id){
        this.id=id;
    }
    public int getSelary(){
    }
}
class Manager() extends Employee(){
    Manager(int id){
        super(id);//調用Employee的構造函數
    }
    public int getSelary(){
    }
}

若子類沒有顯示的調用父類的構造函數,編譯器將會默認調用父類不帶參的構造函數,若父類有帶參的構造函數,子類沒有顯示的調用任何一個父類帶參的構造函數將會報錯。

4.多態

4.1 is-a原則:子類的每一個對象都是超類的對象,例如每個經理都是僱員,故Manager類可以設計爲Employee類的子類。但是反之不正確,每個僱員不一定是經理
4.2 根據is-a原則表明在程序中任何超類對象出現的地方都可以用子類進行替換,例可以將一個子類對象賦值給超類的變量。
4.3 一個超類變量既可以用超類對象進行賦值,也可以用子類對象進行賦值,此時即爲多態的情況。通過多態,編譯器將會根據情況對超類變量使用的方法進行判斷是調用超類的方法還是調用子類的方法。
Employee employee =new Employee();
employee .getSelary();//調用父類方法
employee=new Manager();
employee . getSelary();//調用子類方法

根據is-a原則,不能將一個超類的引用賦給子類對象,此時將會出現錯誤的情況。

4.4子類在重構父類的方法時,子類方法不能低於超類方法的可見性,即父類方法爲public 子類重構時只能是public,父類爲protect時,子類重構時只能是protect或者public。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章