對於繼承而言,子類可以直接獲得父類的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的實現中,對...