Java編程思想 第7章 複用類

一、繼承與組合數組

        複用類的方法有兩種:繼承與組合。繼承就很少說了,組合就是直接在類中new一個對象。
spa

        數組也是對象,使用數組也是組合的一種。代理

二、初始化基類對象

        當建立一個導出類的對象時,該對象包含一個基類的子對象。這個子對象跟直接new一個基類的對象徹底相同,惟一的區別是:一個在外部,一個被包裝在導出類對象內部。
繼承

        在導出類構造器中,經過調用基類構造器來執行初始化。【在Java中,全部導出類的全部構造器內部都必須調用父類的某一個構造器或全部導出類的全部構造器內部都必須調用一個其餘構造器(既能夠是本類構造器也能夠是父類的構造器),可是最終必須調用到父類的某一個構造器。也就是說,必須確保可以正確初始化父類對象。若是沒有顯式調用其它構造器,JVM會默認爲你添加調用父類無參構造的代碼,若是父類已經顯式定義其餘有參構造而沒有定義無參構造,則會報找不到的編譯期異常。
編譯器

三、代理:介於繼承與組合的「中庸之道」編譯

        1)將一個成員對象置於所需構建的類中(相似組合)
變量

        2)在新類中暴露該成員對象的全部方法(相似繼承)
方法

四、繼承與組合的商榷技術

        組合比繼承經常使用得多;

        應該慎用繼承技術,多用組合。由於組合的方式比繼承靈活得多。

        那麼應該什麼時候使用繼承更加適合呢?下面是判斷依據:

                是否須要重新類向基類進行向上轉型?

                1)若是必須向上轉型,則繼承是必須的;

                2)若是不須要,則應好好考慮繼承與組合的取捨。        

五、final關鍵字

        用來修飾數據、方法和類。

        final狀態表示最終狀態:(若是是變量)不可修改、(若是是方法)不可覆蓋、(若是是類)不可繼承。

        static final 【】:表示編譯器常量;

        private 方法,隱含着final做用(由於他一樣不可覆蓋和修改等)。

相關文章
相關標籤/搜索