繼承的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
新的實(shí)現(xiàn)很容易,因?yàn)榇蟛糠质抢^承而來的
很容易修改和擴(kuò)展已有的實(shí)現(xiàn)
缺點(diǎn)
打破了封裝,因?yàn)榛愊蜃宇惐┞读藢?shí)現(xiàn)細(xì)節(jié)
白盒重用,因?yàn)榛惖膬?nèi)部細(xì)節(jié)通常對子類是可見的
當(dāng)父類的實(shí)現(xiàn)改變時(shí)可能要相應(yīng)的對子類做出改變
不能在運(yùn)行時(shí)改變由父類繼承來的實(shí)現(xiàn)
由此可見,組合比繼承具有更大的靈活性和更穩(wěn)定的結(jié)構(gòu),一般情況下應(yīng)該優(yōu)先考慮組合。只
有當(dāng)下列條件滿足時(shí)才考慮使用繼承:
子類是一種特殊的類型,而不只是父類的一個(gè)角色
子類的實(shí)例不需要變成另一個(gè)類的對象
子類擴(kuò)展,而不是覆蓋或者使父類的功能失效
優(yōu)點(diǎn)
新的實(shí)現(xiàn)很容易,因?yàn)榇蟛糠质抢^承而來的
很容易修改和擴(kuò)展已有的實(shí)現(xiàn)
缺點(diǎn)
打破了封裝,因?yàn)榛愊蜃宇惐┞读藢?shí)現(xiàn)細(xì)節(jié)
白盒重用,因?yàn)榛惖膬?nèi)部細(xì)節(jié)通常對子類是可見的
當(dāng)父類的實(shí)現(xiàn)改變時(shí)可能要相應(yīng)的對子類做出改變
不能在運(yùn)行時(shí)改變由父類繼承來的實(shí)現(xiàn)
由此可見,組合比繼承具有更大的靈活性和更穩(wěn)定的結(jié)構(gòu),一般情況下應(yīng)該優(yōu)先考慮組合。只
有當(dāng)下列條件滿足時(shí)才考慮使用繼承:
子類是一種特殊的類型,而不只是父類的一個(gè)角色
子類的實(shí)例不需要變成另一個(gè)類的對象
子類擴(kuò)展,而不是覆蓋或者使父類的功能失效