2010-11-03 167 views
0

我有兩個類ModalWinodw和SkinnableWindow都擴展了Window類。我想創建具有兩個類的函數的類,但是在Java類中可以只擴展一個超類。那麼如何解決這個問題呢?擴展兩個類

+0

這是接口有時比類更好的一個例子。 – 2010-11-03 17:50:15

+0

這也是爲什麼我不喜歡Java「OO」的一個例子:-) – 2010-11-03 19:14:37

回答

2

Composition(至少有一個,可能兩個「基」類都是成員對象)。根據需要還有很多代理(有些編輯會在這裏幫助你)。

Yahoo Java OO!

編輯:儘管組合是「要走的路」(在不重新設計類層次結構的情況下),但取決於如何使用接口和主格名稱,它有一些特定的限制。如果你需要將「特定」類型(ModalWindow或SkinnableWindow)傳遞到任何地方,那麼你幾乎處於一個受到傷害的世界,因爲你的新類最多隻能有一個作爲祖先(如果它是一個或更少,你可能能夠滑過)。儘可能使用接口並儘可能使用類似可以減少這種傷害。

快樂編碼。

1

您可以使用組合。讓你的班級有一個(或兩個)字段並將他們的方法公開爲傳遞方法。

3

這就是那句「Composition在傳承」,其實適合的情況下...

我會創建一個合併,我想既適合類的功能的接口。

然後我會創建一個實現我的新界面的類。該類將包含ModalWindow和SkinnableWindow的一個實例。根據所調用的功能,我的類只需將方法調用傳遞給適當的類,並在需要時利用每個類的功能。