【发布时间】:2019-07-15 05:01:34
【问题描述】:
界面:
interface MasterPlan{
void getRate();
}
抽象类:
abstract class Plan implements MasterPlan{
abstract void getRate();
} }
在这种情况下,如果在getRate() 方法中不使用public 修饰符,我将无法实现MasterPlan 接口。
public abstract void getRate();
这是正常行为。
我知道接口中的默认修饰符是default。在实现的抽象类中没有public 修饰符出现此错误的原因是什么?
【问题讨论】:
-
"我知道默认修饰符在接口中是"默认"。" ...那么你的知识是有缺陷的。接口中的默认修饰符是“public”。这个问题甚至证明了这一点。
-
接口中定义的方法必须通过契约公开。
-
在 class 中,缺少“public”(或
private)访问修饰符本身就是访问声明:它声明方法具有包-私人访问。即使方法声明恰好实现了接口的方法,该行为也不会改变。所以你必须像写任何其他公共方法一样写public。而且因为您正在实现一个接口方法,它确实必须是公开的。 -
Tom and deHaar,是的,明白了。它是“公开的”。不是“默认”。谢谢:)
标签: java interface abstract-class access-modifiers