5 8 2 利用組合實現復用

2021-06-29 14:45:52 字數 1116 閱讀 2734

對於繼承而言,子類可以直接獲得父類的public方法,程式使用子類時,都可以直接訪問該子類從父類那裡繼承到的方法;而組合則是把舊類物件作為新類的成員變數組合起來,用以實現新類的功能。

package chap5_7;

class

animal

public

void breath()

}class

bird

extends

animal

}class

wolf

extends

animal

}public

class

inherittest

}

package chap5_7;

class animal

public

void

breath()

}class bird

public

void

breath()

public

void

fly()

}class wolf

public

void

breath()

public

void

run()

}public

class compositetest

}

執行結果

心臟跳動...

...吸一口氣,吐一口氣,呼吸中...

...我在天空自在的飛翔...

..心臟跳動...

...吸一口氣,吐一口氣,呼吸中...

...我在陸地上快速的奔跑...

...

如果採用組合的設計方式,先建立被嵌入類例項,此時需要分配2塊記憶體空間,再建立整體類例項,也需要分配3塊記憶體空間,只是需要多乙個引用變數來引用被嵌入的物件。通過這個分析來看,繼承設計與組合設計的系統開銷不會有本質的差別。

如果person類需要復用arm類的方法,此時就應該採用組合關係來實現復用。

繼承要表達的是一種 是 is-a的關係,而組合表達的是有 has a的關係。

繼承的拓展 利用組合來實現復用

假設有3個類 animal wolf bird 新建乙個animal類 全部在包中 package org class animal public void breath 建乙個wolf類 package org import org.animal 匯入包中的animal類 class wolf 重...

利用遞迴巧妙實現組合

借鑑了該部落格中的輸入兩個整數 n 和 m,從數列1,2,3.n 中 隨意取幾個數,使其和等於 m 要求將其中所有的可能組合列出來 listlist1 void combine char str,int m,int len,int n cout n return list1.push back st...

紅藍對抗 利用python指令碼實現埠復用

目錄 埠復用埠復用的簡單實現 python 指令碼 埠復用埠復用就是在乙個開放的埠上,通過對輸入的資訊進行字元匹配,來執行不同的服務。埠復用只對輸入的資訊進行字元匹配,不對網路資料進行任何攔截 複製類操作,所以對網路資料的傳輸效能絲毫不受影響。埠復用常被黑客用來製作後門。在winsock的實現中,對...