JVM实现接口和纯抽象类之间的区别?

Man*_*nux 4 java jvm

我和我的朋友们想知道JVM在接口和纯抽象类之间是否真的存在差异,或者它是否真的是语法糖.

我真的不明白为什么会有区别,但可能不是那么牵强.

Tom*_*icz 5

就字节码(.class文件)而言,它们完全不同:

4.1 ClassFile结构:

ClassFile {
    //...
    u2 constant_pool_count;
    cp_info constant_pool[constant_pool_count-1];
    //...
    u2 super_class;
    u2 interfaces_count;
    u2 interfaces[interfaces_count];
}
Run Code Online (Sandbox Code Playgroud)

显然,类可以有一个超类(abstract或不是)和多个实现的接口.它是JVM的限制,而不是Java(语言)限制.