問題タブ [overriding]
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# - プロパティが「new」キーワードで継承されたメンバーを隠している場合、リフレクションはどのように通知しますか?
だから私が持っている場合:
リフレクションを使用して、ChildClass が TempProperty の Base 実装を隠していることを確認するにはどうすればよいですか?
私は答えがc#とvb.netの間で不可知であることを望みます
javascript - オリジナルを参照しながらJavaScript関数をオーバーライドする
a()
オーバーライドしたい関数がありますa()
が、コンテキストに応じた順序で元の関数を実行することもできます。たとえば、ページを生成するときに、次のようにオーバーライドしたい場合があります。
そして時々このように:
original_a()
オーバーライド内からそれを取得するにはどうすればよいa()
ですか?それも可能ですか?
このようにオーバーライドする代わりの方法を提案しないでください。私は多くのことを知っています。具体的にはこの方法について質問しています。
inheritance - 継承、親子、オーバーライド
私が読んでいる OOP の本でこの引用に出くわしました。
子供は、機能を拡張し、機能を追加することのみが許可されています。子供が機能を削除することは決して許可されていません。子が機能を削除する必要があることがわかった場合、これは、子が継承階層で親の前に表示される必要があることを示しています。
しかし、私の質問は、これがオーバーライドの機能ではないでしょうか?
c# - C# でのオーバーライドと継承
わかりました、私が学んでいる間、私と一緒に待ってください。これが私の質問です。
親クラスのメソッドをオーバーライドできない理由がわかりません。これが基本クラスのコードです (はい、OOP の本から Java コードを盗み、C# で書き直そうとしています)。
基本クラス (MoodyObject) を継承する他の 2 つのオブジェクトを次に示します。
と:
ここに私のメインがあります:
ご覧のとおり、かなり基本的なものですが、出力は次のとおりです。
ムーディーなオブジェクトは今日どのように感じますか? 今日は気分が悪い!
悲しいオブジェクトは今日どのように感じますか? 今日は気分が悪い!うわ…ブーフー
今日の幸せなオブジェクトはどう感じますか? 今日は気分が悪い!ふふふふふ。何かキーを押すと続行します 。. .
私が期待したようではありません。基本メソッドを仮想にして、オーバーライドしようとしたときにオーバーライドを呼び出してみましたが、「仮想、抽象、またはオーバーライドとマークされていないため、継承されたメンバー 'MoodyObject.getMood()' をオーバーライドできません」というエラーが表示されます。また、仮想およびオーバーライドなしで試してみましたが、基本メソッドを非表示にしようとしていると考えられます。繰り返しますが、私は OOP を初めて使用するので、ガイダンスをいただければ幸いです。
追加するために編集:見つけました!MoodyObject.cs は、「ConsoleApplication1」アイテムではなく、ソリューション エクスプローラーの「ソリューション アイテム」に過ぎませんでした。ソリューション エクスプローラーの該当する場所にドラッグすると、できあがりです。それは今動作します。以下のLucの回答を回答としてマークしました.解決した場所にたどり着くために必要な助けを提供してくれたからです...私はここで多くのことを学んでいます. それは驚くべきことであり、皆さんと女の子は頭がおかしいです!
language-agnostic - ポーリング:渡されたオブジェクトがLHSタイプと一致しない場合の等式の正しい動作?
findbugsについて関連する質問をしましたが、もっと一般的な質問をしましょう。
ポリモーフィズムが可能なオブジェクト指向言語で作業していると仮定します。
言語が静的型チェック(Java、C ++など)をサポートしているとします。
言語がパラメータの分散を許可しないと仮定します(たとえば、Java、再び...)
Objectをパラメーターとして受け取る等式操作をオーバーライドする場合、パラメーターが、呼び出されたLHSと同じタイプまたはサブタイプではない状況でどうすればよいですか?
オプション1-オブジェクトが明らかに等しくないため、falseを返します
オプション2-言語が実際に分散をサポートしている場合(これが望ましい)、コンパイル時にエラーとしてキャッチされるため、キャスト例外をスローします。したがって、別のタイプが送信される状況は違法であるはずなので、実行時にこのエラーを検出することは理にかなっています。
c# - C#は、サブクラスインスタンスであることを知らずに、オーバーライドされたサブクラスメソッドを呼び出します
仮想メソッドを持つ基本クラスと、そのメソッドをオーバーライドする複数のサブクラスがあります。
これらのサブクラスの1つに遭遇したとき、オーバーライドされたメソッドを呼び出したいのですが、サブクラスの知識がありません。これを行うための醜い方法(値をチェックしてキャストする)を考えることはできますが、言語で行う方法があるはずです。リストに同じリスト内に複数のサブクラスを含めたいのですが、そうでなければ、明らかにリストを作成することができます。
編集:間違っていたコードのコメントを修正しました。これは、私が得た非常に適切な最初の答えにつながりました:)
例えば:
c++ - C++ で両方のパラメーターに const を使用して演算子をオーバーライドする
両方の const パラメーターを使用してオーバーライドされた演算子関数を作成しようとしていますが、その方法がわかりません。簡単な例を次に示します。
私がここでやろうとしているのは、const である 2 つの引数を加算関数に渡し、クラス内で何も変更せずに結果を返すことです。
これは可能ですか、どうすればこれを行うことができますか?
ありがとう、
ダン
c++ - C++でのオーバーライドとオーバーロード
はい、私はそれらの違いを理解しています。私が知りたいのは、なぜメソッドをオーバーライドするのかということです。それをすることの良いところは何ですか?過負荷の場合:唯一の利点は、関数の名前を変えて考える必要がないことです。
c# - 派生クラスの外部から基本メソッドを強制的に呼び出す
私は2つのクラスを持っています:
そして、MyDerived をインスタンス化する次のコードがあります。
事は、基底クラスの DoMe をどのように呼び出すかです。myDerived.DoMe() を使用すると、派生メソッドが呼び出され、例外が発生します。myDerived を MyBase にキャストしようとしましたが、呼び出されるメソッドはまだ派生バージョンです。
編集:以下のコメントで述べたように、私のコードではないため、MyDerived または MyBase を変更することはできません。