問題タブ [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.
java - スーパークラスはオーバーライドされたメソッドを呼び出さないのですか?
私は次のクラスを持っています:
ここでbar.b()を呼び出すとき、fooでオーバーライドされたメソッドa()を呼び出すようにします。ただし、「a」は出力されます。
delphi - Delphi の reintroduce および override ディレクティブの意味は何ですか?
override
ディレクティブとreintroduce
ディレクティブの違いは何ですか? inherited
また、オーバーライドされたメソッドでキーワードを使用してはいけないのはいつですか?
c# - C# Virtual と Override の内部動作
C# の仮想およびオーバーライド メカニズムが内部でどのように機能するかというトピックは、プログラマーの間で死に至るまで議論されてきました...しかし、Google で 30 分後、次の質問に対する答えが見つかりません (以下を参照)。
簡単なコードを使用する:
基本クラスまたは中間派生クラスのメソッドに、最も派生したインスタンスを使用するだけでは (3 つのクラスのメソッド シグネチャを変更せずに) 到達できないと思います。しかし、私の理解を確認し、固めたいと思います...
ありがとう。
python - Python での継承とオーバーライド __init__
私は「Dive Into Python」を読んでいて、クラスに関する章で次の例を示しています。
次に、作成者は、メソッドをオーバーライドする場合は、正しいパラメーターを使用し __init__
て親を明示的に呼び出す必要があると述べています。__init__
- その
FileInfo
クラスに複数の祖先クラスがある場合はどうなりますか?- 祖先クラスのすべての
__init__
メソッドを明示的に呼び出す必要がありますか?
- 祖先クラスのすべての
- また、オーバーライドしたい他のメソッドに対してこれを行う必要がありますか?
objective-c - スーパークラスのメソッドをオーバーライドする Objective C サブクラス
Objective C で、何かをサブクラス化し、スーパークラスのメソッドをオーバーライドする予定がある場合、サブクラス @interface でスーパークラス メソッドを再宣言する必要がありますか?
たとえば、UIViewController (MyViewController など) をサブクラス化していて、"viewDidLoad" をオーバーライドする予定がある場合、そのメソッドを MyViewController @interface 宣言に含めるか、単に MyViewController.m に実装する必要がありますか?
私が遭遇した例では、それが両方の方法で行われているのを見てきました (サブクラス インターフェイスでメソッドを再宣言するか、メソッドを再宣言しない)。機能的な違いはないかもしれませんが、ベスト プラクティスは何ですか?
c# - リストをオーバーライドする方法.C# の IsReadOnly
List から派生させ、IsReadOnlyプロパティを選択的にオンまたはオフにしようとしています。Add/Remove/[] 関数がこのプロパティを尊重することを望んでいましたが、そうではありません。これを行う正しい方法は何ですか?
私の派生クラスには追加のプロパティがいくつかあるため、残念ながらリストを ReadOnlyCollection でラップすることはできません。
java - Java 1.4でメソッドをオーバーライドするときに、「未使用のパラメータ」の警告を回避するにはどうすればよいですか?
このコードでは:
コンパイラーは、MyClassReadOnly.setInnerValue()の未使用のパラメーター(決して読み取らない)innerValueについて正しく文句を言います。
通常は非常に便利なので、この種の警告を無効にしたくありません。また、信号/ノイズ比を高くするために警告を表示したくありません。
@SuppressWarnings()構文は、Java 1.4のみであるため、提案された別の質問として使用することはできません。
私はこのようなダミーコードを挿入することを考えましたが、それはあまり満足のいくものではありません:
java - オーバーライドされたメソッドに特殊なパラメーターを設定することは可能ですか?
「shape」という抽象的な親クラスがあり、複数のサブクラス(三角形、正方形、円...)があるとします。すべてのサブクラスが実装する必要のある親の「shape」クラスに抽象メソッドを定義したいので、それを「draw」と呼びましょう。したがって、すべての形状サブクラスは「draw()」メソッドを提供する必要があります。ただし、drawメソッドは「Stencil」タイプのパラメーターを取り、すべての形状サブクラスが任意のステンシルだけを使用できるわけではありません。
したがって、1つの抽象的な「形状」クラス、複数の形状サブクラス、および複数のステンシルがあります。shapeクラスで定義されたdrawメソッドが必要です。正方形はStencil1を使用し、円はStencil2を使用する場合があります。
ジェネリックスでうまくいくと思いますが、よくわかりません。これらのクラスは他のクラスでも使用されるため、各形状サブクラスは特定のステンシルを使用して描画メソッドを定義する必要があります。コンパイラは、すべてのプログラマに、そのクラスでサポートされているステンシルを使用して描画メソッドを呼び出すように強制する必要があります。「publicabstractvoiddraw(Stencil s)」のような抽象メソッドを定義することはできません。これは、プログラマーが任意のステンシルをsquareクラスに渡すことができるのに対し、squareクラスは「Stencil1」のみをサポートするためです。
何か案は?
Update1: シェイプクラスはサブクラスで使用されるステンシルを気にしないことを追加する必要がありますが、サブクラスは他のクラスでも使用されるため、サポートされているステンシルのみがコンパイラによって受け入れられるようにdrawメソッドを定義することが重要です。 。
c# - 基本クラス(例:.net TreeNodeクラス)のメソッド、プロパティ、...をオーバーライドするまでの距離
TreeViewコントロールを使用してビジネスオブジェクトを表すアプリケーションに取り組んでいます。現在、ビジネスオブジェクトとTreeNodeの間のリンクは、TreeNodeのTagプロパティを介して維持されています。リンクが十分に「タイト」ではないと思うので、私はこれにあまり満足していません。たとえば、ビジネスオブジェクトのないTreeNodeオブジェクトが存在する可能性があります。また、ビジネスオブジェクトの状態に応じてTreeNodeイメージを更新したいと思います。したがって、TreeNodeから独自の特別なTreeNodeクラスを派生させました。
この最小限のアプローチでは、「(ActionTreeNode)myNode.Parent」のようにTreeNodeオブジェクトを返す基本クラスのプロパティまたはメソッドを呼び出すたびにキャストする必要があります。解決策は、すべてのメソッドまたはプロパティをオーバーライド/上書きし、ActionTreeNodeタイプのオブジェクトを返すことです。最小限のアプローチを取る方が適切だと思いますか、それともキャストを避けるためにすべてのメソッド、プロパティを再実装する努力をしますか?ありがとう。