Java は多重継承をサポートしていますか?
面接中、多くの候補者は Java の多重継承サポートについての議論に直面します。別のクラスおよびオブジェクトを拡張するクラスは、これが多重継承を構成するかどうかについて疑問を引き起こします。概念を詳しく見てみましょう:
Java の継承モデル
Java は単一継承モデルに従います。つまり、クラスは 1 つの親クラスからのみ継承できます。ただし、マルチレベルの継承はサポートされており、クラスは、それ自体が別のクラスから継承する親クラスから継承できます。
面接の質問の説明
シナリオインタビューの質問で説明されている内容には、クラス Object を拡張するクラス B を拡張するクラス A が含まれています。これが多重継承を表すというインタビュアーの提案は誤りです。この状況は、多重継承ではなく、マルチレベル継承の例です。
内部実装
コンパイラはオブジェクトのメンバーを解決するときに、継承階層を横断します。適切なメソッド実装を見つけます。クラス Object を継承するクラス B を継承するクラス A の例では、コンパイラーはクラス A、次にクラス B、最後にクラス Object 内の目的のメンバーをチェックします。
Java インターフェースと複数の「is a」関係
Java インターフェースでは、複数のタイプとの「is a」関係が許可されます。クラスは 1 つ以上のインターフェイスを実装できます。ただし、クラスはインターフェイス メソッドに独自の実装を提供する必要があるため、インターフェイスの実装は従来の意味での多重継承を構成しません。
結論
要約すると、Javaマルチレベル継承はサポートしていますが、従来の多重継承はサポートしていません。クラスが、それ自体が Object を拡張する別のクラスを拡張する場合、これは多重継承とみなされません。コンパイラは、子クラスから開始して必要に応じてチェーンを上に移動して、継承階層を通じてメンバー アクセスを解決します。インターフェイスは、複数の「is a」関係に対して異なるメカニズムを提供しますが、多重継承を完全にはサポートしません。
以上がJava では真の多重継承が可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。