問題タブ [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.

0 投票する
6 に答える
3849 参照

c# - C# Virtual と Override の内部動作

C# の仮想およびオーバーライド メカニズムが内部でどのように機能するかというトピックは、プログラマーの間で死に至るまで議論されてきました...しかし、Google で 30 分後、次の質問に対する答えが見つかりません (以下を参照)。

簡単なコードを使用する:

基本クラスまたは中間派生クラスのメソッドに、最も派生したインスタンスを使用するだけでは (3 つのクラスのメソッド シグネチャを変更せずに) 到達できないと思います。しかし、私の理解を確認し、固めたいと思います...

ありがとう。

0 投票する
5 に答える
201599 参照

python - Python での継承とオーバーライド __init__

私は「Dive Into Python」を読んでいて、クラスに関する章で次の例を示しています。

次に、作成者は、メソッドをオーバーライドする場合は、正しいパラメーターを使用し __init__て親を明示的に呼び出す必要があると述べています。__init__

  1. そのFileInfoクラスに複数の祖先クラスがある場合はどうなりますか?
    • 祖先クラスのすべての__init__メソッドを明示的に呼び出す必要がありますか?
  2. また、オーバーライドしたい他のメソッドに対してこれを行う必要がありますか?
0 投票する
2 に答える
14335 参照

objective-c - スーパークラスのメソッドをオーバーライドする Objective C サブクラス

Objective C で、何かをサブクラス化し、スーパークラスのメソッドをオーバーライドする予定がある場合、サブクラス @interface でスーパークラス メソッドを再宣言する必要がありますか?

たとえば、UIViewController (MyViewController など) をサブクラス化していて、"viewDidLoad" をオーバーライドする予定がある場合、そのメソッドを MyViewController @interface 宣言に含めるか、単に MyViewController.m に実装する必要がありますか?

私が遭遇した例では、それが両方の方法で行われているのを見てきました (サブクラス インターフェイスでメソッドを再宣言するか、メソッドを再宣言しない)。機能的な違いはないかもしれませんが、ベスト プラクティスは何ですか?

0 投票する
3 に答える
1162 参照

c# - リストをオーバーライドする方法.C# の IsReadOnly

List から派生させ、IsReadOnlyプロパティを選択的にオンまたはオフにしようとしています。Add/Remove/[] 関数がこのプロパティを尊重することを望んでいましたが、そうではありません。これを行う正しい方法は何ですか?

私の派生クラスには追加のプロパティがいくつかあるため、残念ながらリストを ReadOnlyCollection でラップすることはできません。

0 投票する
5 に答える
8540 参照

java - Java 1.4でメソッドをオーバーライドするときに、「未使用のパラメータ」の警告を回避するにはどうすればよいですか?

このコードでは:

コンパイラーは、MyClassReadOnly.setInnerValue()の未使用のパラメーター(決して読み取らない)innerValueについて正しく文句を言います。

通常は非常に便利なので、この種の警告を無効にしたくありません。また、信号/ノイズ比を高くするために警告を表示したくありません。

@SuppressWarnings()構文は、Java 1.4のみであるため、提案された別の質問として使用することはできません。

私はこのようなダミーコードを挿入することを考えましたが、それはあまり満足のいくものではありません:

0 投票する
4 に答える
787 参照

java - オーバーライドされたメソッドに特殊なパラメーターを設定することは可能ですか?

「shape」という抽象的な親クラスがあり、複数のサブクラス(三角形、正方形、円...)があるとします。すべてのサブクラスが実装する必要のある親の「shape」クラスに抽象メソッドを定義したいので、それを「draw」と呼びましょう。したがって、すべての形状サブクラスは「draw()」メソッドを提供する必要があります。ただし、drawメソッドは「Stencil」タイプのパラメーターを取り、すべての形状サブクラスが任意のステンシルだけを使用できるわけではありません。

したがって、1つの抽象的な「形状」クラス、複数の形状サブクラス、および複数のステンシルがあります。shapeクラスで定義されたdrawメソッドが必要です。正方形はStencil1を使用し、円はStencil2を使用する場合があります。

ジェネリックスでうまくいくと思いますが、よくわかりません。これらのクラスは他のクラスでも使用されるため、各形状サブクラスは特定のステンシルを使用して描画メソッドを定義する必要があります。コンパイラは、すべてのプログラマに、そのクラスでサポートされているステンシルを使用して描画メソッドを呼び出すように強制する必要があります。「publicabstractvoiddraw(Stencil s)」のような抽象メソッドを定義することはできません。これは、プログラマーが任意のステンシルをsquareクラスに渡すことができるのに対し、squareクラスは「Stencil1」のみをサポートするためです。

何か案は?

Update1: ​​シェイプクラスはサブクラスで使用されるステンシルを気にしないことを追加する必要がありますが、サブクラスは他のクラスでも使用されるため、サポートされているステンシルのみがコンパイラによって受け入れられるようにdrawメソッドを定義することが重要です。 。

0 投票する
2 に答える
374 参照

c# - 基本クラス(例:.net TreeNodeクラス)のメソッド、プロパティ、...をオーバーライドするまでの距離

TreeViewコントロールを使用してビジネスオブジェクトを表すアプリケーションに取り組んでいます。現在、ビジネスオブジェクトとTreeNodeの間のリンクは、TreeNodeのTagプロパティを介して維持されています。リンクが十分に「タイト」ではないと思うので、私はこれにあまり満足していません。たとえば、ビジネスオブジェクトのないTreeNodeオブジェクトが存在する可能性があります。また、ビジネスオブジェクトの状態に応じてTreeNodeイメージを更新したいと思います。したがって、TreeNodeから独自の特別なTreeNodeクラスを派生させました。

この最小限のアプローチでは、「(ActionTreeNode)myNode.Parent」のようにTreeNodeオブジェクトを返す基本クラスのプロパティまたはメソッドを呼び出すたびにキャストする必要があります。解決策は、すべてのメソッドまたはプロパティをオーバーライド/上書きし、ActionTreeNodeタイプのオブジェクトを返すことです。最小限のアプローチを取る方が適切だと思いますか、それともキャストを避けるためにすべてのメソッド、プロパティを再実装する努力をしますか?ありがとう。

0 投票する
4 に答える
5687 参照

python - Pythonの組み込みStrの拡張

サブクラス化しようとしてstrいますが、不変性のためにいくつかの問題があります。

のような新しい機能を必要としない継承されたメソッドの場合、 (の代わりに)derived.lower()型のオブジェクトを返す簡単なpythonicの方法はありますか?または、私が行ったように、各str.method()を手動でオーバーライドすることに固執していますか?DerivedClassstrderived.upper()

編集:

0 投票する
1 に答える
1097 参照

ruby-on-rails - Rails で属性をオーバーライドし、基になる値を取得する

私の人生では、これを行う方法がわかりません。保存された値がファイル システム上のリソースへのパスであるモデルがあります。モデルがファイル システムからリソースを書き込んでフェッチするようにしたいので、当然、これを行うために getter と setter をオーバーライドしたいと考えています。次に、データベースにある基になる値を取得するにはどうすればよいですか?

アンダースコアがある場所には何が入りますか? これを行うために「write_attribute」が使用されているのを見たことがありますが、廃止されたようです。何か案は?もちろん、ゲッターについても同様です。

また、オーバーライドに関して間違ったツリーを吠えている場合は、より良いテクニックを聞きたいです。オプションではない唯一のことは、値をデータベースに直接保存することです。

ありがとう!

0 投票する
7 に答える
20316 参照

c++ - オーバーライドする関数からオーバーライドされた関数を呼び出す

クラスBに仮想関数foo()があり、Bの派生クラスの1つであるクラスDでわずかに異なる動作が必要であるとします。オーバーライド関数D :: foo()を作成し、B :: foo( )そこから、特別な場合の治療の後?このような:

私はそれがうまくいくかどうか尋ねていません、私はそれがうまくいくことを知っています。良いOODの観点からそれが正しいかどうか知りたいです。