作者 | Hollis
從學習Java的第一天起,我們就知道Java是一種面向對象語言,而學習Java的第二天,我們就知道了面向對象的三大基本特性是:封裝、繼承、多态。
是以,對于很多開發者來說,繼承肯定都是不陌生的。但是,繼承一定适合所有的場景嗎?毫無忌諱的使用繼承來做代碼擴充真的好嗎?
為什麼《阿裡巴巴Java開發手冊》中有一條規定:謹慎使用繼承的方式進行擴充,優先使用組合的方式實作。

本文就來針對這些問題,簡單分析一下。
面向對象的複用技術
每個人在剛剛學習繼承的時候都會或多或少的有這樣一個印象:繼承可以幫助我實作類的複用。是以,很多開發人員在需要複用一些代碼的時候會很自然的使用類的繼承的方式,因為書上就是這麼寫的(老師就是這麼教的)。但是,其實這樣做是不對的。長期大量的使用繼承會給代碼帶來很高的維護成本。
前面提到複用,這裡就簡單介紹一下面向對象的複用技術。
複用性是面向對象技術帶來的很棒的潛在好處之一。如果運用的好的話可以幫助我們節省很多開發時間,提升開發效率。但是,如果被濫用那麼就可能産生很多難以維護的代碼。
作為一門面向對象開發的語言,代碼複用是Java引人注意的功能之一。Java代碼的複用有繼承,組合以及代理三種具體的表現形式。
來源 | HollisChuang's Blog