問題タブ [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 投票する
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の観点からそれが正しいかどうか知りたいです。

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

c# - 可変オブジェクトの GetHashCode をオーバーライドしますか?

いつ、どのようにオーバーライドするかについて、約 10 の異なる質問を読みましたが、GetHashCodeまだよくわからないことがあります。のほとんどの実装はGetHashCode、オブジェクトのフィールドのハッシュ コードに基づいていますが、 の値はGetHashCodeオブジェクトの存続期間にわたって変更されるべきではないとされています。それが基づいているフィールドが可変である場合、それはどのように機能しますか? また、オーバーライドされたものではなく、参照の等価性に基づいて辞書検索などを行いたい場合はどうすればよいEqualsですか?

私は主にEquals、シリアル化と逆シリアル化 (私の場合は XML へ) によって参照の等価性が失われると想定しているシリアル化コードの単体テストを容易にするためにオーバーライドしているため、少なくとも値の等価性によって正しいことを確認したいと考えています。この場合、オーバーライドEqualsするのは悪い習慣ですか? 基本的に、実行中のコードのほとんどで、参照の等価性が必要であり、常に使用==しており、それをオーバーライドしていません。ValueEqualsオーバーライドする代わりに、新しいメソッドなどを作成する必要がありますEqualsか? 私は、フレームワークが常に物事を比較するために and を使用==しないと想定していたEqualsので、オーバーライドしても安全だと思っていEqualsました。==オペレーター。他のいくつかの質問を読むと、そうではないようです。

編集:

私の意図が不明確だったようです。私が言いたいのは、99% の時間は単純な古い参照の等価性、デフォルトの動作、驚きがないことを望んでいるということです。.Equals非常にまれなケースですが、値の等価性が必要であり、代わりに を使用して値の等価性を明示的に要求したいと考えています==

これを行うと、コンパイラはオーバーライドGetHashCodeも推奨するため、この質問が出てきました。GetHashCode変更可能なオブジェクトに適用する場合、次のような矛盾する目標があるように見えました。

  1. もしそうa.Equals(b)なら。a.GetHashCode()== b.GetHashCode()
  2. の値はa.GetHashCode()、 の存続期間中は変更されませんa

オブジェクトの状態が変化すると、 の値が変化することが予想されるため、これらは当然矛盾しているように.Equals()見えGetHashCodeます。.Equals()GetHashCode

なぜこのような矛盾があるように見えるのでしょうか? これらの推奨事項は、変更可能なオブジェクトに適用するためのものではありませんか? おそらく想定されていますが、構造体ではなくクラスについて言及していることに言及する価値があるかもしれません。

解像度:

私は JaredPar を承認済みとしてマークしていますが、主にコメントのやり取りのためです。ここから学んだことをまとめると、すべての目標を達成し、エッジ ケースで発生する可能性のある風変わりな動作を回避する唯一の方法は、オーバーライドEqualsGetHashCodeて不変フィールドに基づくか、または を実装することIEquatableです。Equalsこの種の参照型は、主キーでそれらを識別するためにリレーショナル データベースに格納されていない限り、ほとんどの参照型は通常、不変フィールドを持たないことがわかっているため、参照型のオーバーライドの有用性を損なうようです。

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

java - Java インターフェイス: メソッドの継承、オーバーライド、およびオーバーロード

Ken Arnold、James Gosling、David Holmes による「THE Java™ Programming Language, Fourth Edition」では、次のように述べられています。

パラグラフ:(4.3.2) 「同様に、インターフェイスが同じシグネチャを持つ複数のメソッドを継承する場合、またはクラスが同じシグネチャを持つメソッドを含む異なるインターフェイスを実装する場合、そのようなメソッドは1つだけです。このメソッドの実装最終的にはインターフェイスを実装するクラスによって定義され、あいまいさはありません. メソッドの署名が同じで戻り値の型が異なる場合、戻り値の型の 1 つが他のすべての型のサブタイプである必要があり、そうでない場合はコンパイル時エラーになります。実装では、共通のサブタイプを返すメソッドを定義する必要があります。」

上記の段落のポイントを正当化するサンプルコードを誰か教えてもらえますか?

私はコードを書き、言及されていることをテストしようとしましたが、サブインターフェースが基本インターフェースメソッドを隠しているため、サブインターフェースメソッドのみを実装できるコンパイル時エラーが発生しています。

前もって感謝します。-アルン

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

xslt - XSLT テンプレートのオーバーライド

XSLT テンプレートのオーバーライドに関してちょっとした質問があります。XML のこのセグメントの場合:

私の XSLT シートには、次の順序で 2 つのテンプレートがあります。

私がやりたいことは、投薬要素の下にあるすべてを、「名前」要素 (または明示的に定義した他の要素) 以外の出力にコピーすることです。最終的な xml は、RAW XML 形式でユーザーに表示されます。言い換えれば、私が望む結果は次のとおりです。

一方、入力と同じ XML を取得しています。つまり、要素がテキストに置き換えられていません。2 番目のテンプレートの一致が最初の名前要素を上書きしない理由はありますか? 前もって感謝します

-- アリ

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

jquery - jQuery UI DatePicker: 今日の CSS をオーバーライドする

jQuery の日付ピッカーで特別な日を強調するために beforeShowDay を使用しています。背景を変更できる唯一の方法は、css クラスで「!important」タグを使用することです。これは、「今日」を除くすべての日で完全に機能します。css は背景色を変更せず、境界線のみを変更します。

私のCSS:

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

c++ - C++ でのベースのオーバーロードされた関数のオーバーライド

重複の可能性:
C++ オーバーロードの解決

クラスがその基本クラスの関数をオーバーライドした後、関数のオーバーロードされたバージョンがすべて非表示になるという問題に遭遇しました。これは仕様によるものですか、それとも私が何か間違ったことをしているだけですか?

元。

次の例では、bar に a(double) 関数がないというコンパイル エラーが発生します。

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

python - Pythonで静的メソッドをオーバーライドする

ここでPythonのバインドされたメソッドとバインドされていないメソッドに関する最初の回答を参照すると、質問があります。

出力を生成します:

Pythonで静的メソッドをオーバーライドする方法はありますか?

「T2」を出力することを期待b_test.method_three()していましたが、出力しません(代わりに「Calledmethod_two」を出力します)。