問題タブ [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.
python - Pythonの組み込みStrの拡張
サブクラス化しようとしてstr
いますが、不変性のためにいくつかの問題があります。
のような新しい機能を必要としない継承されたメソッドの場合、 (の代わりに)derived.lower()
型のオブジェクトを返す簡単なpythonicの方法はありますか?または、私が行ったように、各str.method()を手動でオーバーライドすることに固執していますか?DerivedClass
str
derived.upper()
編集:
ruby-on-rails - Rails で属性をオーバーライドし、基になる値を取得する
私の人生では、これを行う方法がわかりません。保存された値がファイル システム上のリソースへのパスであるモデルがあります。モデルがファイル システムからリソースを書き込んでフェッチするようにしたいので、当然、これを行うために getter と setter をオーバーライドしたいと考えています。次に、データベースにある基になる値を取得するにはどうすればよいですか?
アンダースコアがある場所には何が入りますか? これを行うために「write_attribute」が使用されているのを見たことがありますが、廃止されたようです。何か案は?もちろん、ゲッターについても同様です。
また、オーバーライドに関して間違ったツリーを吠えている場合は、より良いテクニックを聞きたいです。オプションではない唯一のことは、値をデータベースに直接保存することです。
ありがとう!
c++ - オーバーライドする関数からオーバーライドされた関数を呼び出す
クラスBに仮想関数foo()があり、Bの派生クラスの1つであるクラスDでわずかに異なる動作が必要であるとします。オーバーライド関数D :: foo()を作成し、B :: foo( )そこから、特別な場合の治療の後?このような:
私はそれがうまくいくかどうか尋ねていません、私はそれがうまくいくことを知っています。良いOODの観点からそれが正しいかどうか知りたいです。
c# - 可変オブジェクトの GetHashCode をオーバーライドしますか?
いつ、どのようにオーバーライドするかについて、約 10 の異なる質問を読みましたが、GetHashCode
まだよくわからないことがあります。のほとんどの実装はGetHashCode
、オブジェクトのフィールドのハッシュ コードに基づいていますが、 の値はGetHashCode
オブジェクトの存続期間にわたって変更されるべきではないとされています。それが基づいているフィールドが可変である場合、それはどのように機能しますか? また、オーバーライドされたものではなく、参照の等価性に基づいて辞書検索などを行いたい場合はどうすればよいEquals
ですか?
私は主にEquals
、シリアル化と逆シリアル化 (私の場合は XML へ) によって参照の等価性が失われると想定しているシリアル化コードの単体テストを容易にするためにオーバーライドしているため、少なくとも値の等価性によって正しいことを確認したいと考えています。この場合、オーバーライドEquals
するのは悪い習慣ですか? 基本的に、実行中のコードのほとんどで、参照の等価性が必要であり、常に使用==
しており、それをオーバーライドしていません。ValueEquals
オーバーライドする代わりに、新しいメソッドなどを作成する必要がありますEquals
か? 私は、フレームワークが常に物事を比較するために and を使用==
しないと想定していたEquals
ので、オーバーライドしても安全だと思っていEquals
ました。==
オペレーター。他のいくつかの質問を読むと、そうではないようです。
編集:
私の意図が不明確だったようです。私が言いたいのは、99% の時間は単純な古い参照の等価性、デフォルトの動作、驚きがないことを望んでいるということです。.Equals
非常にまれなケースですが、値の等価性が必要であり、代わりに を使用して値の等価性を明示的に要求したいと考えています==
。
これを行うと、コンパイラはオーバーライドGetHashCode
も推奨するため、この質問が出てきました。GetHashCode
変更可能なオブジェクトに適用する場合、次のような矛盾する目標があるように見えました。
- もしそう
a.Equals(b)
なら。a.GetHashCode()
== b.GetHashCode()
- の値は
a.GetHashCode()
、 の存続期間中は変更されませんa
。
オブジェクトの状態が変化すると、 の値が変化することが予想されるため、これらは当然矛盾しているように.Equals()
見えGetHashCode
ます。.Equals()
GetHashCode
なぜこのような矛盾があるように見えるのでしょうか? これらの推奨事項は、変更可能なオブジェクトに適用するためのものではありませんか? おそらく想定されていますが、構造体ではなくクラスについて言及していることに言及する価値があるかもしれません。
解像度:
私は JaredPar を承認済みとしてマークしていますが、主にコメントのやり取りのためです。ここから学んだことをまとめると、すべての目標を達成し、エッジ ケースで発生する可能性のある風変わりな動作を回避する唯一の方法は、オーバーライドEquals
しGetHashCode
て不変フィールドに基づくか、または を実装することIEquatable
です。Equals
この種の参照型は、主キーでそれらを識別するためにリレーショナル データベースに格納されていない限り、ほとんどの参照型は通常、不変フィールドを持たないことがわかっているため、参照型のオーバーライドの有用性を損なうようです。
java - Java インターフェイス: メソッドの継承、オーバーライド、およびオーバーロード
Ken Arnold、James Gosling、David Holmes による「THE Java™ Programming Language, Fourth Edition」では、次のように述べられています。
パラグラフ:(4.3.2) 「同様に、インターフェイスが同じシグネチャを持つ複数のメソッドを継承する場合、またはクラスが同じシグネチャを持つメソッドを含む異なるインターフェイスを実装する場合、そのようなメソッドは1つだけです。このメソッドの実装最終的にはインターフェイスを実装するクラスによって定義され、あいまいさはありません. メソッドの署名が同じで戻り値の型が異なる場合、戻り値の型の 1 つが他のすべての型のサブタイプである必要があり、そうでない場合はコンパイル時エラーになります。実装では、共通のサブタイプを返すメソッドを定義する必要があります。」
上記の段落のポイントを正当化するサンプルコードを誰か教えてもらえますか?
私はコードを書き、言及されていることをテストしようとしましたが、サブインターフェースが基本インターフェースメソッドを隠しているため、サブインターフェースメソッドのみを実装できるコンパイル時エラーが発生しています。
前もって感謝します。-アルン
xslt - XSLT テンプレートのオーバーライド
XSLT テンプレートのオーバーライドに関してちょっとした質問があります。XML のこのセグメントの場合:
私の XSLT シートには、次の順序で 2 つのテンプレートがあります。
私がやりたいことは、投薬要素の下にあるすべてを、「名前」要素 (または明示的に定義した他の要素) 以外の出力にコピーすることです。最終的な xml は、RAW XML 形式でユーザーに表示されます。言い換えれば、私が望む結果は次のとおりです。
一方、入力と同じ XML を取得しています。つまり、要素がテキストに置き換えられていません。2 番目のテンプレートの一致が最初の名前要素を上書きしない理由はありますか? 前もって感謝します
-- アリ
jquery - jQuery UI DatePicker: 今日の CSS をオーバーライドする
jQuery の日付ピッカーで特別な日を強調するために beforeShowDay を使用しています。背景を変更できる唯一の方法は、css クラスで「!important」タグを使用することです。これは、「今日」を除くすべての日で完全に機能します。css は背景色を変更せず、境界線のみを変更します。
私のCSS:
c++ - C++ でのベースのオーバーロードされた関数のオーバーライド
重複の可能性:
C++ オーバーロードの解決
クラスがその基本クラスの関数をオーバーライドした後、関数のオーバーロードされたバージョンがすべて非表示になるという問題に遭遇しました。これは仕様によるものですか、それとも私が何か間違ったことをしているだけですか?
元。
次の例では、bar に a(double) 関数がないというコンパイル エラーが発生します。
python - Pythonで静的メソッドをオーバーライドする
ここでPythonのバインドされたメソッドとバインドされていないメソッドに関する最初の回答を参照すると、質問があります。
出力を生成します:
Pythonで静的メソッドをオーバーライドする方法はありますか?
「T2」を出力することを期待b_test.method_three()
していましたが、出力しません(代わりに「Calledmethod_two」を出力します)。