質問

たとえそれが悪い慣行かもしれないとしても、私はそれがその目的を果たす時があると言うでしょう。

役に立ちましたか?

解決

https://stackoverflow.com/questions/995255/why-is-multiple-inheritance-not-olowed-in-java-or-c この質問をうまくカバーします。

私の考えはこれです。デザイナーは、おそらく優れたデザインの原則を促進する言語を作りたかったのでしょう。わかりました、そのため、複数の継承が完璧であることがあります。しかし、これらはルールではなく例外であり、非常に簡単に虐待される可能性があります。そこで、デザイナーはそれを不可能にすることを決めました。

それが良い場合は、インターフェイスを使用する必要があります。不器用ではあるが、それらの仕事。しかし、そんなにそれらを必要としません。

他のヒント

理由を説明するために、複数の継承はC ++によってサポートされていますが、MIで行う作曲でほとんどのものを達成できるので、はるかにクリーンな方法では、強く落胆しています。 C ++とは異なり、C#は「ハイブリッド」タイプのOOP言語ではなく、以前の言語から進化しませんでした。

複数の継承が本当に必要な場合は、複数のインターフェイスを実装できます。

Walter BrightはDの作成者であり、MIを含むものではなく、C ++コンパイラ全体を自分で書く唯一の人です。彼によると、DがMIに欠けている理由は、同時に効率的でシンプルで有用なMIのシステムを作成するのが難しすぎるからです。 JavaとC#は同様の推論を使用していると思います。 PerlやPythonのような言語は、主要な目標として効率を持っていないため、シンプルで便利ですが、効率的に実装するのは難しいシステムがあります。 C ++は目標としてシンプルさを持っていないようであるため、ほとんど誰も理解していない非常に複雑なシステムが作成されました。

ウォルターはターゲットにいると思います。これら3つの基準をすべて合理的に満たすMIシステムを持つ言語が存在する場合は、コメントを残してください。

複数の継承は、それをよく使用すると、非常に複雑な状況になります。 あまりにも多くの複雑さがあり、それがJavaとC#の両方で除外された理由です。

言語デザイナーは、一般的なより良い言語ではなく、より良いC ++を生産したかったからです。 (彼らがどれほど成功したかを議論することができます。)

C ++ - スタイル多重継承にはいくつかの問題があるため、C ++に由来する人々は一般にそれを省略しました(Java、C#、D)。他の言語、エッフェルと2つの名前を付ける一般的なLispは、それを異なって行い、同じ問題を抱えていないようです。

ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top