为什么接口变量在默认情况下是静态的和最终的?

2022-08-31 05:00:45

为什么在Java中,接口变量是静态的和默认的?


答案 1

来自Philip Shaw的Java界面设计常见问题解答:

接口变量是静态的,因为Java接口不能单独实例化;变量的值必须在不存在实例的静态上下文中赋值。最后一个修饰符确保分配给接口变量的值是无法由程序代码重新分配的真正常量。


答案 2

public:用于跨所有类的可访问性,就像接口中存在的方法一样

static:由于接口不能有对象,因此可以使用 interfaceName.variableName 来引用它,或者直接引用实现它的类中的 variableName。

final:使它们成为常量。如果 2 个类实现相同的接口,并且您赋予它们两个类更改值的权限,则 var 的当前值将发生冲突,这就是为什么只允许一次初始化的原因。

此外,所有这些修饰符对于接口都是隐式的,您实际上不需要指定其中任何一个。