在java文档中,有人说:
与接口,抽象类不同 可以包含不的字段 静态和最终,它们可以包含 实施方法。
这是正确的文字吗? 不部分让我感到困惑,因为接口没有static
或final
字段,对吗?
来源:http://download.oracle.com/javase/tutorial/java/IandI/abstract.html
感谢。
修改:
public interface GroupedInterface extends Interface1,
Interface2, Interface3 {
// constant declarations
double E = 2.718282; // base of natural logarithms
// method signatures
void doSomething (int i, double x);
int doSomethingElse(String s);
}
接口可以包含常量 除方法之外的声明 声明。所有常数值 在接口中定义的是隐含的 公共,静态和最终。再来一次, 这些修饰语可以省略。
答案 0 :(得分:3)
正文中的每个字段声明 界面是隐式公开的, 静态的,最后的。允许 冗余地指定任何或全部 这些领域的修饰语。
来自Java语言规范(here)
的第9.3节答案 1 :(得分:2)
点击问题链接中的“Defining an Interface”:
接口可以包含常量 除方法之外的声明 声明。所有常数值 在接口中定义的是隐含的 公共,静态和最终。再来一次, 这些修饰语可以省略。
答案 2 :(得分:2)
这是正确的文字。
界面中的所有字段都被推断为public,static和final,无论是否明确声明。正如所有方法都是公开的和抽象的一样,无论是否如此声明。
答案 3 :(得分:1)
报价是正确的。接口可以具有静态最终字段,但不能具有任何其他组合(非静态或非最终)。
默认情况下,接口上的字段是静态的和最终的,添加修饰符不是必需的,因为没有替代方法。
对于抽象类,赋予它可变状态是有意义的,请参阅java.util.AbstractList。接口不允许任何成员在实现它的类上赋予可变状态。
答案 4 :(得分:1)
思考是..界面内的所有字段都是静态的和最终的,即使你没有写静态和最终的!
答案 5 :(得分:1)
文档是正确的。接口可能包含要用作常量的静态最终字段。抽象类可以包含要通过扩展类继承的实例变量。然后,这些变量可以在扩展类的实例中使用。