【发布时间】:2011-12-23 01:35:17
【问题描述】:
以下代码 sn-p 表明 Java 中的接口只能有一个修饰符 public。在接口中不允许使用其他修饰符(私有和受保护),无论是字段还是任何方法。显然,在修饰符中,private 在接口中没有任何意义,但在接口中应该允许使用 protected,因为它可以被它的实现类合并。
interface Demo
{
private final static int a=10; //Will not be compiled.
protected final static int b=20; //Will not be compiled.
public final static int x=0; //ok
abstract public void showSum();
}
虽然允许抽象类具有所有修饰符 private、public 和 protected。我的问题只是一个受保护的修饰符 not 在一个似乎被允许的界面中被允许。为什么?
【问题讨论】:
-
接口的唯一目的是定义一个公开可见的签名。
-
接口定义了独立于实现的 API。没有可以利用私有字段和方法的代码。在接口中添加常量值是不好的做法。