ホームページ >Java >&#&チュートリアル >Java は多重継承をサポートしていますか?

Java は多重継承をサポートしていますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 18:50:02327ブラウズ

Does Java Support Multiple Inheritance?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。