Possible Duplicate:
Protected in Interfaces
以下代码段显示Java中的接口只能有一个公共的修饰符。接口中不允许使用字段或任何方法使用其他修饰符(私有修饰符和受保护修饰符)。显然,在修饰符之间,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();
}
最佳答案
显然,最佳答案是“因为这就是他们的定义方式”。我认为在最初定义Java时做出的决策背后的理由我不会太费劲。直到很久以前,使用这种语言所获得的经验表明,这些最初的决定中有许多是有缺陷的。
在这种情况下,接口旨在用作与对象进行通信的公共协议,因此,决定所有成员必须是公共的。这可能不是最好或最有用的定义,但这是我们拥有的定义,我们必须接受它。