让我们举个例子:
public interface Testerface {
default public String example() {
return "Hello";
}
}
public class Tester implements Testerface {
@Override
public String example() {
return Testerface.super.example() + " world!";
}
}
public class Internet {
public static void main(String[] args) {
System.out.println(new Tester().example());
}
}
很简单,这将打印出来Helloworld!。但是请说我正在使用返回值进行其他操作Testerface#example,例如初始化数据文件并返回不应离开实现类的敏感内部值。为什么Java不允许默认接口方法使用访问修饰符?为什么它们不能被子类保护/私有并可能被提升(类似于_扩展_ 父类的类如何为覆盖的方法使用更可见的修饰符)?
常见的解决方案是迁移到抽象类,但是在我的特定情况下,我具有枚举的接口,因此不适用于此处。我想象它要么被忽略,要么是因为接口背后的原始想法是它们是可用方法的“契约”,但是我想我希望输入有关此过程的信息。
默认方法的基本思想是:它是具有默认实现的接口方法,而派生类可以提供更具体的实现
在我看来,能见度完全不会破坏这一方面。
就像链接的问题一样,由于似乎很难 解决问题 ,因此 在此问题上 , 权威的回答将是可取的 ,而不是基于观点的 回答 。