Java と C# で多重継承が許可されない理由
多重継承、つまりクラスが継承する機能はよく知られています。複数の親クラスからの使用は、Java または C# では許可されません。多くのリソースは単にこの事実を述べていますが、多くの場合、この設計上の決定の背後にある根本的な理由を詳しく掘り下げることができません。
短い答え:
理由は単に言語がデザイナーはそれを含めないことにしました。
長め説明:
.NET と Java の両方の設計者は、多重継承によって言語に大幅な複雑性が追加される一方で、最小限の利点しか得られないと考えました。複雑さには以下が含まれます:
- 競合の解決: 多重継承により、異なる親クラスから同じ名前のメソッドまたはプロパティを継承するときに競合を解決する方法という問題が発生します。
- 冗長性の処理: 一部のシナリオでは、多重継承により継承メンバーの重複が発生する可能性があります。これにより、あいまいさと混乱が生じる可能性があります。
- 実装のオーバーヘッド: 複数の継承を追加すると、キャスト、レイアウト、ディスパッチ、フィールド アクセス、シリアル化、ジェネリックなどの領域が複雑になります。
言語によるインタビュー設計者:
.NET の CLR に取り組んだ Chris Brumme 氏は、この決定についてさらに説明しました:
- 言語が異なると MI に対する期待が異なるため、実装が困難になります普遍的なソリューションです。
- MI の実際のアプリケーションは多くの場合制限されており、複数のインターフェイスの継承やカプセル化などの代替手段は多くの場合、これで十分です。
- MI を実装するには、言語の実装に大幅な変更が必要となり、機能のさまざまな領域に影響します。
Java の場合も、理論的根拠は同様です。
- シンプルさ、親しみやすさ、そして不必要な C の複雑さを避けたいという欲求が、Java の指針となっていました。 design.
- 設計者は、C の経験に基づいて、多重継承は解決するよりも多くの問題を引き起こすと信じていました。
以上がJava と C# が多重継承を避けることを選択したのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1 か月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
1 か月前By尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
3週間前ByDDD
Will R.E.P.O.クロスプレイがありますか?
1 か月前By尊渡假赌尊渡假赌尊渡假赌

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
