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

Java 为什么抽象类字段不是隐式静态的,java,interface,abstract-class,Java,Interface,Abstract Class,根据这个问题,t 公认的答案是,接口字段是隐式静态的,因为我们无法实例化它 但抽象类的情况不也应该如此吗?既然抽象类不能被实例化,那个抽象类的字段不应该也是静态的吗 我知道它们不是静态的,但有人能解释一下原因吗。抽象类不能实例化,但它们被用作具体类的基类,而具体类又可以实例化 接口字段必须是静态的主要原因不是不能实例化接口;这是因为一个类可以从多个接口继承,因此可以从多个位置继承状态。有各种各样的棘手的情况,比如C++之类的语言可以出现(也确实如此)。这不是默认情况下接口字段是静态的。原因是接口

根据这个问题,t

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

但抽象类的情况不也应该如此吗?既然抽象类不能被实例化,那个抽象类的字段不应该也是静态的吗


我知道它们不是静态的,但有人能解释一下原因吗。

抽象类不能实例化,但它们被用作具体类的基类,而具体类又可以实例化


接口字段必须是静态的主要原因不是不能实例化接口;这是因为一个类可以从多个接口继承,因此可以从多个位置继承状态。有各种各样的棘手的情况,比如C++之类的语言可以出现(也确实如此)。

这不是默认情况下接口字段是静态的。原因是接口不能定义实例字段


抽象类可以,所以如果字段在默认情况下是静态的,那么在不引入其他无用的
instance
关键字的情况下,就不能声明普通的实例字段。这会让人非常困惑。

不,因为这样你就不能使它们不是静态的。这样,如果需要,您可以使它们成为静态的。