根据这个问题https://stackoverflow.com/questions/2430756/why-are-interface-variables-static-and-final-by-defaul t
接受的答案说,接口字段是隐式静态的,因为我们无法实例化它。
但是抽象类也不应该是同样的情况吗?既然抽象类不能实例化,那么抽象类的字段也不应该是静态的吗?
我知道它们不是静止的,但有人可以解释一下原因。
答案 0 :(得分:1)
这不是界面字段默认为静态的原因。原因是界面可能不定义实例字段。
抽象类可以,因此如果字段默认为静态,则无法在不引入其他无用的instance
关键字的情况下声明正常的实例字段。这将是非常令人困惑的。
答案 1 :(得分:0)
抽象类无法实例化,但它们可以用作具体类的基类,而这些类又可以实例化。
接口字段必须是静态的主要原因不是接口无法实例化;这是因为一个类可以从多个接口继承,因此从多个地方继承状态。有各种棘手的情况可以(并且确实)出现在像C ++这样允许这种情况的语言中。