java公有和默认_为什么Java 8不允许使用非公共默认方法?

让我们举个例子:

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不允许默认接口方法使用访问修饰符?为什么它们不能被子类保护/私有并可能被提升(类似于_扩展_ 父类的类如何为覆盖的方法使用更可见的修饰符)?

常见的解决方案是迁移到抽象类,但是在我的特定情况下,我具有枚举的接口,因此不适用于此处。我想象它要么被忽略,要么是因为接口背后的原始想法是它们是可用方法的“契约”,但是我想我希望输入有关此过程的信息。

默认方法的基本思想是:它是具有默认实现的接口方法,而派生类可以提供更具体的实现

在我看来,能见度完全不会破坏这一方面。

就像链接的问题一样,由于似乎很难 解决问题 ,因此 在此问题上 , 权威的回答将是可取的 ,而不是基于观点的 回答 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值