複数の継承が必要なシナリオはありますか?例を挙げてください。複数の継承が必要なシナリオはありますか?
答えて
開発者が怠け者であり、複数の継承を必要としないより優れたクラスデザインを作成したくない場合は、私は主にC#でコードを作成し、自分のデザインだけを呪われたシナリオは見つけられません単一の継承が可能です。言い換えれば、複数のインターフェイスを実装できるということは、は、が本当に便利だと言われています。
しかし、おそらく複数のインタフェースを使用しています(または、継承とインタフェースの両方を使用しています)。しかし、C++には独立した概念としてのインタフェースがないため、これはC++での多重継承となります。 (C++の開発者は、実装されたメソッドを持たないクラスとしてインターフェイスを考えているだけです)。 –
他のOOP言語が持っているインタフェースのようなものをシミュレートする場合は、複数の継承を使用する必要があります。あなたはチューリングマシン以上のものが必要で何のシナリオはありませんJavaでまたはC#
+1、まさに私が言うこと –
インターフェイスは、より一般的な多重継承(例えば、純粋仮想抽象基底クラス)の限定された特殊なケースです。 –
さらに、インターフェイスは実装の* contract *です。クラス継承は*実際の実装です。 1つだけの実装継承(別名Java、C#など)に制限されない限り、contract *と* implementation(純粋仮想+実装関数)の両方を持つことができます。 – WhozCraig
純粋な抽象クラスを使用すると、インターフェイスを持つことができます。
行うよう
継承を「必要とする」もので、単一のクラスで複数回使用するか、単一のクラスで結合するものは、複数の継承が必要です。継承を使用
共通のC++のイディオムは、抽象クラスを使用して
- JavaスタイルのインターフェースをCRTP(http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)、又は
boost::noncopyable
介して結合シミュレートされたダイナミック含むだけ純粋仮想関数 - ミックスインを含みます。
- ポリシーベースの設計(http://en.wikipedia.org/wiki/Policy-based_design)
- タイプの提供は、あなたが複数のインタフェースを実装する単一のクラスをしたいならば、あなたは多重継承が必要なので、
を特色。ポリシーベースのイテレータータイプが必要な場合は、複数の継承が必要です(ポリシー用に1回、特性用に1回)。
明らかに、同じ出力を持ち、多重継承を使用しないプログラムを書くことができます( "Turing complete we are about we care about"引数)ので、私はsnigger quotesに "requires"を入れます。しかし、チューリングの完全性はではなく、です。私たちは、チューリングの入力と出力を持つプログラムの概念を超えてソフトウェアを書くという目標を持っています。私たちはソースがどのように見えるか気にします。したがって、「必要」。
COMオブジェクトをビルドするとき。
- 1. このシナリオでは、ReceivedLineItemクラスの継承またはコンポジションを使用する必要がありますか?
- 2. シーケンスダイアグラムで継承を示す必要があります
- 3. サブアイテムは親フォルダの権限を継承する必要がありますか?
- 4. 複数の継承モデル間の関係をどのようにマップする必要がありますか?
- 5. Node.js必要なプロトタイプ継承
- 6. MVC 5:ユーザーをIdentityUserクラスから継承する必要がありますか?
- 7. Beanの継承を使用する必要がありますか?
- 8. WPFアプリケーションのSystem.Windows.Application基底クラスを継承する必要がありますか?
- 9. 継承 - ガイダンスが必要
- 10. DTOで継承またはコンポジションを使用する必要があります。
- 11. イベントアドインを継承するウィンドウをクリックする必要がありますか?
- 12. 1つのインターフェイスが別のインターフェイスを継承する必要があります
- 13. テンプレートから継承する必要がある場合、どのようにテンプレートクラスから継承しますか?
- 14. NSObjectを継承する必要があるのはなぜですか?
- 15. コードファーストフルーエントマッピングで継承プロパティを必要とする方法はありますか?
- 16. 複数の継承が必要な場合の正しいアプローチ(TypeScript)
- 17. 継承C++、それはデフォルトコンストラクタで何かを行う必要があり、コンストラクタ
- 18. UML - クラス継承、あなたは何を継承しますか?
- 19. "継承された抽象メソッドを実装する必要があります"
- 20. 複数の継承
- 21. 複数の継承で一致する関数がありません
- 22. 複数の継承と複数レベルの継承
- 23. Java ORM:複数(継承)継承
- 24. 親クラスから継承した変数を宣言する必要がありますか? (PHP 5.3.2)
- 25. AdminUserを拡張するかどうかは、AbstractUserから継承する必要がありますか?前
- 26. 複数のCodecept.jsシナリオをどのように構成する必要がありますか?
- 27. @ContextHierarchyは継承シナリオの外で役に立ちますか?
- 28. オブジェクト指向理論では、派生クラスが親オブジェクトのインターフェイスを継承する必要がありますか?
- 29. 複数の継承関数
- 30. 複数の継承曖昧な関数
はい。あなたも例が欲しいですか?あなたはいくつかを求める必要があります。 – Welbog
いいえ、ほとんどのチューリング完全言語はサポートしていません。 –
これは、http://stackoverflow.com/questions/573913/a-use-for-multiple-inheritanceに近いと思います。 – Arnkrishn