我有接口、抽象方法和更多分类并使用这些引用类型如下。 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
提交
取消