为什么java将接口数据成员设为public&静态隐式?
答案 0 :(得分:1)
接口仅描述外部行为,或“其他人如何看到实现此接口的类的对象” - 从这个角度来看,定义与内部行为本身作为字段耦合的东西是相当无用的。如果想要规定内部行为,抽象类显然是要走的路。
答案 1 :(得分:0)
稍微扩展Smutje的答案:不允许接口定义自己的数据。因此,我怀疑,语言设计者认为数据定义的唯一合法用途是定义一个客户可以使用的常量;因此,Action
中的javax.swing
接口有一个方法
void putValue(String key, Object value)
并且接口还定义了一些可用于key
的常量:
public static final String ACTION_COMMAND_KEY = "ActionCommandKey";
public static final String ACCELERATOR_KEY = "AcceleratorKey";
等。当然,由于这些是常量,因此它们不是存储在实现接口的每个对象中的数据。但这些是接口中允许的唯一数据字段。