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 {

その場合、メソッドを実装する親クラスが 1 つだけである限り、JVM は多重継承をサポートすると言えます。

それとも、インターフェースは JVM の根幹に深く織り込まれているのでしょうか?

4

1 に答える 1

2

実行時に、JVM にはインターフェイスの概念があります。インターフェイス型を介して呼び出されるメソッドは、invokeinterfaceで呼び出されます。

インターフェイスを抽象クラスにコンパイルしてもうまくいきません:

  • 実際、1 つのメソッドが、クラスが実装する複数のインターフェイスによって実装される場合があります。
  • インターフェイス メソッドは、インターフェイスを実装する複数の型で呼び出すことができます。
  • インターフェイスは、そのメソッドの実装を提供しません。
于 2013-07-30T13:17:22.597 に答える