我最近不得不將一個簡單的類分成兩個版本,舊版客戶端的舊版本以及已遷移到單獨界面的新版本。可以重載接口的實現嗎?
由於有很多常見的代碼,我將它拆分爲2個具體類的抽象類。隨着結構如下:
interface ParentInt {
// Common methods
}
interface ChildIntA extends ParentInt {
// Legacy methods
}
interface ChildIntB extends ParentInt {
// New model methods
}
abstract class AbstParentClass implements ParentInt {
// ...
}
class LegacyConcreteClass extends AbstParentClass implements ChildIntA {
// ...
}
class NewConcreteClass extends AbstParentClass implements ChildIntB {
// ...
}
什麼我不知道是是否有我可能會遇到因爲AbstParentClass實現ParentInt和兩個具體的類也實現此接口的孩子有什麼缺陷?這種情況可能會有更好的模式嗎?
無論AbstParentClass是否實現了這個指令,我的代碼目前都能正常工作。事實上,因爲兩個具體類在不同的線程中分別實例化,所以AbstParentClass從來不會直接在其他任何地方引用。
在我的情況下,接口是API的一部分,因此不能從我的POV更改。
即使它們相互擴展,您也應該能夠從儘可能多的接口繼承。你不能從多於一個類繼承(但你不這樣做,所以你應該沒問題:)) – span 2011-12-14 13:59:37
每個人都在評論有關缺少的「擴展AbstParentClass」的子類聲明;我相信這只是一個疏忽,因爲這顯然不是真正的代碼。我已經添加了這些聲明,以便我們可以討論真實情況。 – 2011-12-14 14:05:29