1. 「is-a」(是乙個)的關係是用繼承來表述
2. 「has-a」(有乙個)的關係是用組合來表述
3. 組合語法:
組合技術通常用於想在新類中使用現有累的功能而非它的介面的情況下。即在新類中放入某個類的物件,讓其實現所需要的功能,但是新類的使用者看到的只是為新類所定義的介面,而非嵌入類物件的介面。其實組合在編碼中是經常用到的。
class engine
public void rev() {}
public void stop() {} }
class wheel
public class car }
4. 組合和繼承都允許在新類中放置子物件,組合是顯示的這麼做,而繼承是隱式的做。
java繼承和組合
有了繼承之後,同樣要考慮資料的儲存問題,物件的資料該如何訪問在子類中利用繼承的可訪問性呼叫長輩的方法,用長輩自己的方法操作長輩類自己物件中的私有屬性.super 引數列表 引數列表,是可以為0個或多個的 呼叫父類構造,且super 引數列表 只能寫在子類構造的第一條語句 super 呼叫的是父類的午...
Java繼承和組合的區別
1 組合 has a 關係可以顯式地獲得被包含類 繼承中稱為父類 的物件,而繼承 is a 則是隱式地獲得父類的物件,被包含類和父類對應,而組合外部類和子類對應。2 組合關係在執行期決定,而繼承關係在編譯期就已經決定了。3 組合是在組合類和被包含類之間的一種松耦合關係,而繼承則是父類和子類之間的一種...
java 組合優於繼承
組合和繼承,都能實現對類的擴充套件。區別如下表所示 組合 繼承has a關係 is a關係 執行期決定 編譯期決定 不破壞封裝,整體和區域性松耦合 破壞封裝,子類依賴父類 支援擴充套件,隨意增加組合類 只能繼承乙個父類,必須包含所有方法,增加系統複雜性 動態選擇組合類方法 復用父類方法 下面通過乙個...