2011-05-19 51 views
0

假設我具有圖中所示的類層次結構。假設我需要包含一個方法doThis(),這個方法在類CD中有不同的實現。但類B不需要實現此方法。繼承問題低級別設計方法

我應該聲明在A類合同和在B類提供一個空的實現或具有另一種抽象類X延伸A並正在由CD延長?

感謝Sample Class Diagram

+0

我幾乎無法辨認出圖像。 – 2011-05-19 11:36:24

+0

@Adriaan之前它的規模要大得多。它只是顯示:A由B,C和D擴展.B在左邊。 A位於頂部。 – pickypg 2011-05-19 11:50:27

+0

@Adriaan科斯特即使我無法看到。企業代理阻止圖片上傳網站,你看到。 – nobody 2011-05-19 11:51:10

回答

2

如果A的唯一子類使用方法:
作出這樣的延伸和補充方法的另一種抽象類。

如果您打算將該方法實現爲不同的類類型:
創建一個聲明該方法的接口,然後C,D也應該實現該接口。

+0

添加了一個簡短說明,何時使用每個選項。 – 2011-05-19 11:29:04

3

不要把它變成class A。使用由需要它的人實現的interface

1

製作一個名爲「doable」的接口。讓你的C和D類實現這個。

public interface Doable { 
    public void doThis(); 
} 

public class D implements Doable { /*implementations*/ } 
public class C implements Doable { /*implementations*/ } 
0

如果你能避免它,不要把它放在A中。

最好的解決方案不能根據您提供的信息來確定。它取決於類和方法的上下文和含義。