为什么接口中的所有字段都是隐式静态的和最终的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (86)

我只是想了解为什么在接口定义的所有域都默认staticfinal。保持字段的想法static对我来说是有意义的,因为你不能拥有一个接口的对象,但为什么它们final(隐式地)呢?

任何人知道为什么Java的设计者在接口使得场去staticfinal

提问于
用户回答回答于

一个接口不能有行为或状态,因为它只是指定一个交互契约,没有实现细节。不允许通过不允许方法/构造函数体或静态/实例初始化块来强制执行。没有状态是通过只允许静态最终字段来实施的。因此,类可以有一个状态(静态),但实例状态不是由接口推断的。

BTW:Java中的常量由静态final字段定义(并且通过名称使用UPPER_CASE_AND_UNDERSCORES)。

用户回答回答于

原因在于 final

如果它们没有被定义为final,任何实现都可以改变字段的值。然后他们将成为实施的一部分。一个接口是一个没有任何实现的纯规范。

原因在于 static

如果它们是静态的,那么它们属于接口,而不属于对象,也不属于对象的运行时类型。

扫码关注云+社区

领取腾讯云代金券