Java - Class v/s接口的初始化

sgo*_*les 8 java initialization interface class

我坚持下面的java类和接口初始化的概念:

我在下面提到的书中读到了以下句子:

初始化接口只是因为使用了接口声明的非常量字段,绝不会因为需要初始化实现接口的子接口或类.
但是当我们初始化任何java类时,情况并非如此.

因此,类的初始化需要事先初始化其所有超类,而不是其超级接口.
接口的初始化不需要初始化其超接口.

我的问题是为什么会这样?

任何帮助将不胜感激 !

谢谢

PS:Book - Bill Venners的"Java虚拟机内部"(第7章 - 课程的生命周期)

Eri*_*ere 5

您可以在界面中声明的唯一内容是方法签名和常量字段.后者可以使用常量值(即字符串文字,整数等,可能在某种组合中)或使用非常量值(即方法调用)进行初始化.因此,如果接口没有任何非常量字段,则不需要初始化 - 所有内容在编译时都是已知的.如果程序使用非常量字段,则必须运行初始化代码以确保为这些字段分配值.

希望有所帮助.

PS:如果有人想要全文阅读,那么这一章可以在网上找到.