たとえそれが悪い慣行かもしれないとしても、私はそれがその目的を果たす時があると言います。
たとえそれが悪い慣行かもしれないとしても、私はそれがその目的を果たす時があると言います。
回答:
/programming/995255/why-is-multiple-inheritance-not-allowed-in-java-or-cはこの質問をうまくカバーしています。
私の見解は次のとおりです。おそらくデザイナーは、優れたデザイン原則を促進する言語を作りたかったのでしょう。OK、多重継承が完璧な場合があります。ただし、これらは規則ではなく例外であり、非常に簡単に悪用される可能性があります。それで、デザイナーはそれを不可能にすることにしました。
それが良いと思われる場合は、インターフェースを使用する必要があります。ぎこちなくても、これらは機能します。しかし、それほど多くは必要ありません。
Walter Brightは、MIを含まないDの作成者であり、C ++コンパイラ全体を自分で作成する唯一の人物です。彼によると、DがMIを欠いている理由は、同時に効率的でシンプルで便利なMIのシステムを作成するのが難しいためです。JavaとC#は同様の推論を使用していると思います。PerlやPythonなどの言語は、主要な目標として効率性を持たないため、シンプルで便利なシステムを備えていますが、効率的に実装することは困難です。C ++は単純さが目標ではないようで、ほとんど誰も理解できない非常に複雑なシステムを作成しました。
Walterは的を射ていると思います。これらの3つの基準を合理的にすべて満たすMIシステムを持つ言語が存在する場合は、コメントを残してください。
多重継承を頻繁に使用すると、非常に複雑な状況になります。あまりメリットがなく複雑すぎて、JavaとC#の両方が除外されたのはそのためです。