接口变量:设计为静态和最终
Java 接口在定义要实现的类的合同义务方法方面起着至关重要的作用。除了方法声明之外,接口还支持变量。有趣的是,这些变量表现出一个独特的特征:默认情况下它们都是静态的和最终的。了解这种设计选择背后的基本原理对于有效的 Java 编程至关重要。
为什么是静态?
Java 中的静态修饰符表示与类本身关联的变量,而不是与类本身关联的变量。单独的类实例。当应用于接口变量时,静态可确保它们在实现该接口的所有类之间共享。这是有道理的,因为接口变量旨在表示适用于实现该接口的类的所有实例的通用属性。
例如,考虑一个接口 IShape,它定义了表示几何常量(如 PI)的变量。无论具体的形状实现如何,这些变量都应保持相同的值。使它们静态可以确保这种行为。
为什么是 Final?
Final 修饰符使变量不可变,初始化后禁止重新分配。此特征与接口变量的性质一致。它们旨在表示作为接口契约一部分的常量值。在类实现中修改接口变量将违反预期行为并可能导致错误。
例如,如果 IShape 有一个变量 MAX_VERTICES,在类实现中设置其值将打破固定最大值的假设所有形状的顶点数。最终性可以防止这种不一致。
事实来源
Philip Shaw 的 Java 接口设计常见问题解答中进一步阐明了静态和最终接口变量的基本原理。他指出接口变量是静态的,以适应接口不能直接实例化的事实。因此,它们的值必须在静态上下文中分配。 Final 修饰符确保这些值保持不可变,从而保持接口契约的完整性。
以上是为什么 Java 接口变量都是静态变量和最终变量?的详细内容。更多信息请关注PHP中文网其他相关文章!