2013-07-30 162 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

編譯接口轉換成抽象類是行不通:

  • 單個方法可以確實通過一個類實現的接口的一個以上來實現。
  • 可以在實現接口的多個類型上調用接口方法。
  • 接口不提供其方法的實現。