为什么接口中的所有字段都是隐式静态和最终的?
2022-08-31 10:09:21
我只是试图理解为什么接口中定义的所有字段都是隐式和.保留字段的想法对我来说是有意义的,因为你不能有一个界面的对象,但为什么它们是(隐含的)?static
final
static
final
任何人都知道为什么Java设计人员在界面中制作字段和?static
final
我只是试图理解为什么接口中定义的所有字段都是隐式和.保留字段的想法对我来说是有意义的,因为你不能有一个界面的对象,但为什么它们是(隐含的)?static
final
static
final
任何人都知道为什么Java设计人员在界面中制作字段和?static
final
接口用于指定交互协定,而不是实现详细信息。开发人员应该能够通过查看接口来使用实现,而不必查看实现它的类内部。
接口不允许您创建它的实例,因为您无法指定构造函数。因此,它不能具有实例状态,尽管接口字段可以定义常量,这些常量是隐式静态和最终的。
您无法在接口中指定方法主体或初始值设定项块,尽管从 Java 8 开始,您可以使用 body 指定缺省方法。此功能旨在允许将新方法添加到现有接口,而无需更新所有实现。但是,如果不首先创建实现接口的实例,您仍然无法执行此类方法。
旁注:请注意,您可以使用匿名内部类实现接口:
interface Foo {
String bar();
}
class FooBar {
Foo anonymous = new Foo() {
public String bar() {
return "The Laundromat Café";
};
}
您必须提供接口的完整实现,以便匿名内部类进行编译。
new Foo()
正在使用其默认构造函数初始化匿名内部类。
最终
的原因
如果未将字段定义为 final,则任何实现都可以更改字段的值。然后,它们将成为实施的一部分。接口是没有任何实现的纯规范。
静态
的原因
如果它们是静态的,则它们属于接口,而不是对象,也不属于对象的运行时类型。