java - 在接口(interface)中添加新方法时如何摆脱覆盖所有类

标签 java methods abstract implements

我有接口(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 类,其他应该只使用旧方法。

应该如何设计?

最佳答案

您可以通过两种方式处理它:

  1. 如果您使用的是 Java 7 或更低版本,请扩展 InterfaceA 以创建新接口(interface)
    public InterfaceB extends InterfaceA{
    // Your new methods definitions here..
    }

让 C 类和 D 类实现 InterfaceB。

  1. 如果您使用的是 Java 8 或更高版本,请按照@Slaw 的建议,将默认方法添加到 InterfaceA。覆盖默认实现以在类 C 和 D 中提供您的自定义实现

关于java - 在接口(interface)中添加新方法时如何摆脱覆盖所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57359567/

相关文章:

c# - c#中的根方法体在哪里?

java - 将方法放在与主类文件不同的单独类文件中

java - 无法连接到 Raspberry Pi 上托管的 MariaDB

java - GAE无法访问客户端中实体类的公共(public)方法

c#减少用于从数据库获取数据的方法的数量

c# - 不相关的类是什么意思?

C++继承与抽象函数实现

c++ - 在没有悬挂指针的情况下返回 C++ 中的抽象数据类型

java - android 在没有任何收件人的情况下启动 SMS Intent

java - 创建 cucumber java testng maven 可执行 jar 项目并从命令行运行