Java の継承: 単一継承と多重継承
就職面接中、候補者は Java が多重継承をサポートしているかどうか尋ねられました。候補者は「いいえ」と答え、Java の各クラスは Object を拡張し、「クラス A がクラス B を拡張する」のように別のクラスを拡張することは、クラス A がクラス B とオブジェクトの両方を継承することを意味し、これは多重継承ではなく多レベル継承とみなされます。 .
しかし、インタビュアーはこの回答に異議を唱え、クラス B はオブジェクトを拡張するため、クラス A でクラス B を拡張すると、クラス A がクラス B とオブジェクトの両方から継承することになり、本質的に多重継承が構成されると主張しました。
説明
面接官の具体的な例の文脈では、候補者の回答はほぼ正しかったです。多重継承とは、クラスが 2 つ以上の無関係なベースから継承し、継承階層に「ダイヤモンド」構造を作成する状況を指します。
複数レベルによる Java の単一継承
しかし、Java では、継承は複数のレベルを持つ単一レベルです。クラス A はクラス B を拡張し、クラス B はオブジェクトを拡張します。これにより継承の連鎖が作成されますが、クラス A はクラス B から直接継承し、オブジェクトから間接的に継承するだけです。これは多重継承ではありません。
インターフェースと「デフォルト」メソッド
Java は従来の多重継承をサポートしていませんが、インターフェースとインターフェース上の「デフォルト」メソッドはサポートしています。 (Java 8 で導入されました)。この機能により、クラスは複数のインターフェイスを実装し、それぞれのデフォルト メソッドを継承できます。
ただし、これはまだ真の多重継承ではありません。次の理由からです。
結論
Java の継承モデルでは、複数レベルの単一継承が可能です。 「extends」キーワードとデフォルト メソッドとのインターフェイスを通じて、「多重継承ライト」の形式が提供されます。ただし、これらの概念を、クラスが複数の無関係な基底から継承できる真の多重継承とは区別することが重要です。
以上がJava は多重継承をサポートしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。