我有接口(interface)、抽象方法和更多分类,并按以下方式使用这些引用类型。
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 method
public Class D extend AbstractA //have to override three method
public Class E extend AbstractA //have to override three method but only should be override old method
public Class F extend AbstractA //have to override three method but only should be override old method
这些类派生了 AbstractA 类,我只想在接口(interface)中使用新方法,但只实现 C 和 D 类,其他应该只使用旧方法。
应该如何设计?
最佳答案
您可以通过两种方式处理它:
- 如果您使用的是 Java 7 或更低版本,请扩展 InterfaceA 以创建新接口(interface)
public InterfaceB extends InterfaceA{
// Your new methods definitions here..
}
让 C 类和 D 类实现 InterfaceB。
- 如果您使用的是 Java 8 或更高版本,请按照@Slaw 的建议,将默认方法添加到 InterfaceA。覆盖默认实现以在类 C 和 D 中提供您的自定义实现
关于java - 在接口(interface)中添加新方法时如何摆脱覆盖所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57359567/