9. JavaSE-繼承

面向對象的三個特性:

    1. 封裝(以對象的形式來體現)

    2. 繼承

    3. 多態


繼承的好處:

1. 提高代碼的複用性

2. 讓類與類之間產生了關係,給 面向對象 的第三個特徵多態提供前提。

 

Java中僅支持單繼承,不支持多繼承,但對C++中的多繼承機制進行改良。

    1. 單繼承:一個子類僅有一個父類

    2. 多繼承:一個子類可以有多個直接父類

       1)不直接支持,因爲多個父類中有相同成員,會產生調用的不確定性

       2)在java中是通過“多實現”的方式來體現Java支持多重繼承。

 

當使用繼承體系時;

1. 查看該體系中的頂層類,瞭解該體系的基本功能

2. 創建體系中的最子類對象,完成功能的使用

 

什麼時候定義繼承?

1. 當類與類之間存在所屬關係的時候,就定義繼承(定義繼承的時候,實際上是向上抽取分析的逆過程)

2. 在子父類中,成員的特點體現:

1). 成員變量

      當本類的成員和局部變量同名時用this區分

      當子父類中的成員變量同名用super區分父類

      This和super用法很相似

            This:代表一個本類對象的引用

            Super:並不代表父類對象的引用,而是代表一個父類的空間

2). 成員函數

     當子父類中出現成員函數一模一樣的情況,會運行子類的函數

      這種現象,稱爲覆蓋操作,這是函數在子父類中的特性

      函數兩個特性:重載 和 覆蓋

        重載:在同一個類中

        覆蓋:在子父類中,也稱爲重寫

      覆蓋注意事項:

        子類覆蓋父類方法時,子類權限必須要大於或者等於父類的權限。

         什麼時候使用覆蓋操作?

               當對一個類進行子類的擴展時,子類需要保留父類的功能聲明;但是要定義子類中

               該功能的特有內容時,就使用覆蓋操作完成。

            class Phone

            {

                public void show()

                {

                    System.out.println("number");

                }

                public void call()

                {

                    System.out.println("call");

                }

            }

            class NewPhone extends Phone

            {

                public void show(String name)

                {

                    System.out.println(name);

                    super.show();

                }

            }

            class  PhoneDemo

            {

                public static void main(String[] args) 

                {        

                    NewPhone p = new NewPhone();

                    p.show("keyman");

                    p.call();

                    //System.out.println("Hello World!");

                }

            }

3). 構造函數

        在子類構造對象時,發現,訪問子類構造函數時,父類也運行了。因爲在子類的構造函

        數中第一行有一個默認的隱式語句。Super();

           對於構造函數,不可能出現覆蓋的情況,因爲類名不可能重複,而構造函數的名稱與類名

           相同,因此構造函數不可能出現覆蓋的情況。

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