我有Dad
類別Son
的子類。我想創建一個Dad
的子類和Son
的子類,它覆蓋Dad
的一個方法。如何在不重複代碼的情況下劃分子類
沒有重複代碼,這樣做的最佳方式是什麼?我無法修改Dad
和Son
。
鑑於...
public class Dad {
public void doSomething() {}
}
public class Son extends Dad {
}
...我想創建...
public class DadSubclass extends Dad {
@Overrides
public void doSomething() {
// My code
}
}
public class SonSubclass extends Son {
@Overrides
public void doSomething() {
// My code
}
}
...不重複// My code
。
顯而易見的解決方案是創建一個輔助類併爲它們調用它,但是如果我想調用受保護的方法,這是有問題的,而且我不允許使用相同的包創建子類。
有沒有更好的解決方案?
我會重新考慮你的類層次結構來代替。如果你重複這樣的代碼,這意味着你如何定義它有什麼問題。 – vanza
這實際上取決於具體情況......您需要訪問哪些成員,子類中有多少代碼是相同的。也許看模板方法模式 - 取決於你的情況。 –
@vanza不幸的是原來的類是現有庫的一部分。特別是Android SDK。 – hpique