我有接口、抽象方法和更多分類并使用這些引用類型如下。 public interface InterfaceA { boolean mehod1(); boolean method2(); boolean newMethod(); //When added new method }public abstract class AbstractA implements InterfaceA{// other common method}public Class C extend AbstractA //have to override three methodpublic Class D extend AbstractA //have to override three methodpublic Class E extend AbstractA //have to override three method but only should be override old methodpublic Class F extend AbstractA //have to override three method but only should be override old method這些類派生了 AbstractA 類,我只想在接口中使用新方法,但只實現 C 和 D 類,其他應該只使用舊方法。應該如何設計?
3 回答

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
您可以通過兩種方式處理它:
如果您使用的是 Java 7 或更低版本,請擴展 InterfaceA 以創建新接口
????public?InterfaceB?extends?InterfaceA{? ???????//?Your?new?methods?definitions?here.. ????}
讓 C 類和 D 類實現 InterfaceB。
如果您使用的是 Java 8 或更高版本,可以將默認方法添加到 InterfaceA。覆蓋默認實現以在類 C 和 D 中提供您的自定義實現

白板的微信
TA貢獻1883條經驗 獲得超3個贊
看起來您沒有使用繼承。
如果 C、D、E、F 是 A/AbstractA 的子類,那么 A 中定義的任何方法都應該對所有這些子類都有意義。
您不能阻止一個方法的子類繼承而允許另一個方法繼承。
如果您需要引入不同的概念,請使用不同的層次結構,但不要嘗試設計統一的東西。
對于層次結構中的公共實現,最好的 DRY 方法是將公共實現移動到抽象類中,用于需要實例字段的方法,并將它們移動到接口默認方法中,用于不需要它們的方法。
添加回答
舉報
0/150
提交
取消