为什么抽象类字段不是隐式静态的

时间:2015-03-01 11:48:48

标签: java interface abstract-class

根据这个问题https://stackoverflow.com/questions/2430756/why-are-interface-variables-static-and-final-by-defaul t

接受的答案说,接口字段是隐式静态的,因为我们无法实例化它。

但是抽象类也不应该是同样的情况吗?既然抽象类不能实例化,那么抽象类的字段也不应该是静态的吗?

我知道它们不是静止的,但有人可以解释一下原因。

2 个答案:

答案 0 :(得分:1)

这不是界面字段默认为静态的原因。原因是界面可能不定义实例字段。

抽象类可以,因此如果字段默认为静态,则无法在不引入其他无用的instance关键字的情况下声明正常的实例字段。这将是非常令人困惑的。

答案 1 :(得分:0)

抽象类无法实例化,但它们可以用作具体类的基类,而这些类又可以实例化。

接口字段必须是静态的主要原因不是接口无法实例化;这是因为一个类可以从多个接口继承,因此从多个地方继承状态。有各种棘手的情况可以(并且确实)出现在像C ++这样允许这种情况的语言中。