有庫類B和C,都從類A繼承。我有2個類擴展B & C,即MyB & MyC。Java多繼承,擺脫重複代碼
A
/\
B C
/ \
MyB MyC
MyB
& MyC
共享大量的公共代碼,它們只是略有不同。
我想擺脫重複的代碼,我怎麼能在java中做到這一點?在C++中有可能通過創建一個共同的基類,並把一切,這是常見的,如下所示:
A
/\
B C
\/
MyBase
/\
MyB MyC
有庫類B和C,都從類A繼承。我有2個類擴展B & C,即MyB & MyC。Java多繼承,擺脫重複代碼
A
/\
B C
/ \
MyB MyC
MyB
& MyC
共享大量的公共代碼,它們只是略有不同。
我想擺脫重複的代碼,我怎麼能在java中做到這一點?在C++中有可能通過創建一個共同的基類,並把一切,這是常見的,如下所示:
A
/\
B C
\/
MyBase
/\
MyB MyC
你可以使用composition:
一個類只能從一個類擴展。但是,您可以實現多個接口。
而不是在這些類中擁有所有的邏輯,而是擁有類D
中的所有通用邏輯。現在讓它成爲MyC
和MyB
,每個成員都是D
的實例。這就是所謂的composition。
在Java中,你會使用的東西線沿線的:
組成(圖形) 「在」 MyBase
封裝的B
和C
實例。
重構B
和C
(如有必要),露出一個單獨的接口,說IB
和IC
MyBase
以實現多個接口:IB
和IC
,通過「做正確的事」,以地圖的接口方法到內部B
和C
實例。
MyB
和MyC
實現適當的接口,並將調用映射到MyBase
。
檢查了這一點:http://stackoverflow.com/questions/17226364/java-alternative-to-multiple-inheritance – jsedano