2013-07-30 128 views
1

一个常见的“问题的答案是不是”是Java支持多继承吗?多继承和接口

我正在寻找关于如何处理(Oracle)JVM处理此规则的细节;更具体地说:

在运行时,JVM是否具有接口的任何概念,或者只是将它看作是一个恰好不会实现任何方法的抽象类?

换句话说,我的代码会变成这个吗?

我的代码:

public class A extends B implements C { 

public interface C { 

编译成:

public class A extends B, C { 

public abstract class C { 

在这种情况下,JVM可以说支持多重继承,只要不超过一个父类实现方法。或者是接口更深入地融入到JVM的内核中?

+2

请注意,不止一个实现的接口*可以包含相同的方法。 –

回答

2

在运行时,JVM确实有接口的概念。通过接口类型调用的方法将调用invokeinterface

编译接口转换成抽象类是行不通:

  • 单个方法可以确实通过一个类实现的接口的一个以上来实现。
  • 可以在实现接口的多个类型上调用接口方法。
  • 接口不提供其方法的实现。