假設我具有圖中所示的類層次結構。假設我需要包含一個方法doThis()
,這個方法在類C
和D
中有不同的實現。但類B
不需要實現此方法。繼承問題低級別設計方法
我應該聲明在A
類合同和在B
類提供一個空的實現或具有另一種抽象類X
延伸A
並正在由C
和D
延長?
感謝
假設我具有圖中所示的類層次結構。假設我需要包含一個方法doThis()
,這個方法在類C
和D
中有不同的實現。但類B
不需要實現此方法。繼承問題低級別設計方法
我應該聲明在A
類合同和在B
類提供一個空的實現或具有另一種抽象類X
延伸A
並正在由C
和D
延長?
感謝
如果A的唯一子類使用方法:
作出這樣的延伸和補充方法的另一種抽象類。
如果您打算將該方法實現爲不同的類類型:
創建一個聲明該方法的接口,然後C,D也應該實現該接口。
添加了一個簡短說明,何時使用每個選項。 – 2011-05-19 11:29:04
不要把它變成class A
。使用由需要它的人實現的interface
。
製作一個名爲「doable」的接口。讓你的C和D類實現這個。
public interface Doable {
public void doThis();
}
public class D implements Doable { /*implementations*/ }
public class C implements Doable { /*implementations*/ }
如果你能避免它,不要把它放在A中。
最好的解決方案不能根據您提供的信息來確定。它取決於類和方法的上下文和含義。
我幾乎無法辨認出圖像。 – 2011-05-19 11:36:24
@Adriaan之前它的規模要大得多。它只是顯示:A由B,C和D擴展.B在左邊。 A位於頂部。 – pickypg 2011-05-19 11:50:27
@Adriaan科斯特即使我無法看到。企業代理阻止圖片上傳網站,你看到。 – nobody 2011-05-19 11:51:10