1. 程式人生 > >201711671135 《Java程式設計》第五章學習總結

201711671135 《Java程式設計》第五章學習總結

教材學習內容

1.由繼承得到的類稱為子類,被繼承的類稱為父類(超類)。特別注意,Java不支援多重承,即子類只能有一個父類。它們之間的關係稱為“is-a”關係。使用關鍵字extends來定義一個類的子類

2.類的樹形結構

以object類作為根結點,分為父類子類和子孫類,其中object類沒有父類,其它類可以有多個或者零個子類。如果一個類的宣告中沒有使用extend關鍵字,這個類系統預設是object類的子類

3.子類和父類在同一個包時,子類自然的繼承非private的成員變數和方法,訪問許可權保持不變。

4.當子類和父類不在同一個包時,父類中的private和友好訪問許可權的成員變數不會被子類繼承。

5.instanceof運算子,Java獨有的雙目運算子,左面的操作元是物件,右面的操作元是類,當左面的操作元是右面的類或其子類所建立的物件時,instanceof的運算結果是true,否則為false,instance有例項的意思。

6.特殊情況時,子類所宣告的成員變數的名字和從父類繼承來的成員變數的名字相同(宣告的型別可以不同)

 

教材學習中的問題和解決過程

1.書本中有提到的:每個類(除了object)有且僅有一個父類。這裡我產生了疑惑,我以為意思是,object類可以有多個父類。在經過資料查詢後我發現,object類沒有父類,因為它本身就是所有類的父類。

2.子類和父類可以繼承部分有點混淆。網路查到的資訊如下:子類不能繼承父類的私有屬性,但是如果子類中公有的方法影響到了父類私有屬性,那麼私有屬性是能夠被子類使用的。

 

 

 

程式碼除錯

public class Father {

    private String name;//私有屬性

    private char sex;

    public void tell(){

        System.

out.println(name+sex);

    }

    private void speak(){

        System.out.println(name+"is speaking!");

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public char getSex() {

        return sex;

    }

    public void setSex(char sex) {

        this.sex = sex;

    }

public class Child extends Father {

}

/*

 定義測試類

 */

public class Test {

    public static void main(String[] args) {

        Child c=new Child();

        c.tell();//tell方法是可以用的

        //c.speak();//報錯,父類的私有方法不可見

    }

}