問題タブ [multiple-inheritance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ での多重継承、仮想基底クラス、およびオブジェクト サイズに関する質問
次のコードは 20 を出力します。つまり、sizeof(z) は 20 です。
ここで仮想基本クラスを使用しない場合、つまり次のコードの場合: sizeof(z) は 16 です。
最初のケースで sizeof(z) が more(20) なのはなぜですか? Base は Z に 1 回しか含まれないため、12 であるべきではありませんか?
c++ - C++ で多重継承を避ける必要があるのはなぜですか?
多重継承を使用するのは良い概念ですか、それとも代わりに他のことを行うことができますか?
python - super()を使用するときに自分のクラスを指定する必要があるのはなぜですか?それを回避する方法はありますか?
Pythonを使用super()
してメソッドチェーンを実行する場合は、次のように独自のクラスを明示的に指定する必要があります。
MyDecorator
の引数としてクラスの名前を指定する必要がありますsuper()
。これはDRYではありません。クラスの名前を変更するときは、名前を2回変更する必要があります。なぜこれがこのように実装されているのですか?そして、クラスの名前を2回(またはそれ以上)書く必要がないようにする方法はありますか?
c++ - Visual Studio Compiler の警告 C4250 ('class1' : 'class2::member' を優性経由で継承)
次のコードは、警告 C4250 を生成します。私の質問は、それに対する最善の解決策は何ですか?
私が読んだことによると、これを行うことができるはずです:
しかし、これは実際には何もしません。私が現在それを解決した方法は次のとおりです。
これについてのみんなの見解は?
oop - 複数の継承に対する批判
私は多重継承の概念を調査していました (C++ を怒ってコーディングしてからほぼ 10 年が経ちましたが、単純にこの概念に学問的に興味を持っていました)。ウィキペディアでこのリファレンスを見つけました。
彼らがリストする MI に対する批判の 1 つは、「単一のクラスから複数回明示的に継承できない」ことです。私はこの声明について混乱しており、これが何を指しているのか 100% 確信が持てません。
確かに、クラスの継承はクラスの構造を記述しており、同じクラスから複数回継承することは、同じクラスの契約を繰り返すだけなので、批判を正当化するためにどのような利点があるかわかりません。明示的な継承は、クラスの関数とプロパティの複数のインスタンスを想定しますか?
この批判が何を指しているのか、そして多重継承が有効な言語では暗黙のうちに利用できない理由を理解したいと思います。
c# - 「同名」プロパティを持つ 2 つのインターフェイスの実装
これは妥当な (そしておそらく単純な?) シナリオのように思えますが、次のことを行うにはどうすればよいでしょうか。
2つのインターフェースがあるとしましょう:
クラスに両方のインターフェースを実装させたい:
各インターフェイスのアクセス レベルが異なる場合、クラスで ErrorMsg プロパティを定義するにはどうすればよいですか?
ご参考までに、私のシナリオを次に示します。疑似 MVC アーキテクチャを使用して UserControl を作成しています。ここで、UserControl は拡張インターフェイスを Controller に公開し、Simple インターフェイスをコントロールの Consumers に公開します。
ところで、これを VB.NET で実装します (vb で提案された構文を歓迎します)。
data-binding - IList のバインドIMyInterface が継承する Interfaces のメンバーを表示しない
IList を GridView にバインドしています。IMyInterface は次のようになります
次のようにインスタンスを Grid にバインドします。
これをグリッドにバインドすると、グリッドに表示される唯一のメンバーは、IMyInterface の直接のメンバーである GoalStartDate と GoalEndDate です。
何故ですか?グリッドが継承する他のインターフェイスのメンバーを表示するにはどうすればよいですか?
更新 継承されたインターフェイスは、次のような単純なデータ プロパティを定義します
IMyInterface を実装するクラスがあります。
これらは IMyInterface としてキャストされ、GridView にバインドしているリストに返されます。
oop - 多重継承の使用?
多重継承を使用する状況を考えられる人はいますか? 私が考えることができるすべてのケースは、メソッド演算子によって解決できます
architecture - 変更できない完全に独立した継承ツリーを持つクラスのサブクラス化
どちらのクラスの継承ツリーも他方から継承するように変更できないという制限がある場合、コンテキストの境界を橋渡しするために、それぞれが独立した継承ツリーを持つ 2 つのクラスに参加するにはどうすればよいでしょうか?
つまり、アイテムがデータベースに保存されたエンティティである場合、次のようになります。
描画コンポーネントを使用して表示する必要があるとしましょう:
stockitemgraphicnode
共通メンバーが多いので、単純にサブクラス化するとよいでしょう。
ソリューションを設計する最善の方法は何ですか?