我只是想了解为什么接口(interface)中定义的所有字段都是隐含的 static
和 final
。保持字段 static
的想法对我来说很有意义,因为您不能拥有接口(interface)的对象,但为什么它们是 final
(隐式)?
任何人都知道为什么 Java 设计人员会在接口(interface)中制作 static
和 final
中的字段吗?
最佳答案
接口(interface)旨在指定交互契约,而不是实现细节。开发人员应该能够通过查看接口(interface)来使用实现,而不必查看实现它的类。
接口(interface)不允许您创建它的实例,因为您不能指定构造函数。所以它不能有实例状态,尽管接口(interface)字段可以定义常量,它们是隐式的静态和最终的。
您不能在接口(interface)中指定方法主体或初始化程序 block ,尽管从 Java 8 开始您可以使用主体指定默认方法。此功能旨在允许将新方法添加到现有接口(interface),而无需更新所有实现。但是如果不先创建一个实现接口(interface)的实例,您仍然无法执行这样的方法。
旁白:请注意,您可以使用匿名内部类实现接口(interface):
interface Foo {
String bar();
}
class FooBar {
Foo anonymous = new Foo() {
public String bar() {
return "The Laundromat Café";
};
}
您必须提供接口(interface)的完整实现,才能编译匿名内部类。
new Foo()
正在使用其默认构造函数初始化匿名内部类。
关于java - 为什么接口(interface)中的所有字段都是隐式静态和最终的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1513520/