問題タブ [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 投票する
5 に答える
8790 参照

java - 別のjarを使用してクラスをオーバーライドするにはどうすればよいですか?

顧客は、当社製品の新機能のプレビューを必要としています。彼らは、その機能を jar ファイル (パッチなど) で送信するように依頼しました。上記のjarファイルに新しいクラスを含めることに問題はありません。ただし、新しい機能を統合するために必要な既存のクラスが変更されました。製品のコア クラスを更新せずに、この新しい jar ファイルを追加したいだけです。問題は、別の jar を使用して既存のクラスをオーバーライドすることは可能かということです。もしそうなら、どのように?

前もって感謝します。

0 投票する
17 に答える
68641 参照

.net - VB.NETの「シャドウ」と「オーバーライド」

2つのキーワードShadowsOverridesの重要性は何ですか?彼らは何をし、どちらの文脈でどちらが好ましいのでしょうか?

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

c++ - (通常の) 仮想メソッドを純粋な仮想メソッドでオーバーライドすると、どのような影響がありますか?

私たちが持っているとしましょう

これは本当にオーバーライドですか?これは実際にはオーバーロードしていると思います。このようなものをデザイン的に作る意味は何ですか?

基本クラス A を取得しました。次に、具象クラス A から派生した抽象派生クラス B を取得し、C を介して B を実現しました。

私たちはここで何をしていて、意味がありますか?

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

c++ - C++でパブリック仮想関数をプライベート関数でオーバーライドする

オーバーライドされたC++仮想関数のアクセス許可を基本クラスとは異なるものにする理由はありますか?そうすることで何か危険はありますか?

例えば:

C ++のよくある質問には、それは悪い考えだと書かれていますが、その理由は書かれていません。

私はいくつかのコードでこのイディオムを見てきましたが、プライベートメンバー関数をオーバーライドすることは不可能であるという仮定に基づいて、作成者がクラスを最終的にしようとしていたと思います。ただし、この記事では、プライベート関数をオーバーライドする例を示します。もちろん、C++に関するよくある質問の別の部分ではそうしないことを推奨しています。

私の具体的な質問:

  1. 派生クラスと基本クラスで仮想メソッドに異なる権限を使用することに技術的な問題はありますか?

  2. そうする正当な理由はありますか?

0 投票する
10 に答える
111779 参照

c++ - Safely override C++ virtual functions

I have a base class with a virtual function and I want to override that function in a derived class. Is there some way to make the compiler check if the function I declared in the derived class actually overrides a function in the base class? I would like to add some macro or something that ensures that I didn't accidentally declare a new function, instead of overriding the old one.

Take this example:

Here parent::handle_event() is called instead of child::handle_event(), because the child's method misses the const declaration and therefore declares a new method. This could also be a typo in the function name or some minor difference in the parameters types. It can also easily happen if the interface of the base class changes and somewhere some derived class wasn't updated to reflect the change.

Is there some way to avoid this problem, can I somehow tell the compiler or some other tool to check this for me? Any helpful compiler flags (preferably for g++)? How do you avoid these problems?

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

java - 型消去、オ​​ーバーライド、およびジェネリック

誰かが私に理由を説明できますか

オーバーライドしません

代わりに次のエラーが表示されます。

?

編集: " java -version" は、Java(TM) 2 ランタイム環境、標準版 (ビルド 1.5.0_16-b06-284) を示します。コード スニペットに関しては、既にほぼ上にあります。上は下のものを拡張します。

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

c++ - コンストラクターからの仮想関数呼び出し

間違っているかもしれませんが、これは非常に基本的な質問のようです。突然、継承チェーンが機能しなくなりました。小さな基本的なテスト アプリケーションを作成したことで、間違っていたのは私であることが証明されました (したがって、コンパイラを責めることはできません)。

仮想関数でデフォルトの動作をする基本クラスがあります。子クラスはそれから派生し、動作を変更します。

これは以下を出力します:

Child インスタンスが作成されると、なぜ Base::print() が呼び出されるのですか? virtual キーワードを使うことで、関数を派生クラスに置き換えることができると思いました。

どの時点で私は自分自身を混乱させましたか?

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

c# - 基底クラスは、派生クラスが仮想メンバーをオーバーライドしたかどうかを判断できますか?

これが私のクラスの簡略版です。

派生クラスからロック コードを隠そうとしています。しかし、派生クラスが UpdateSharedData をオーバーライドする場合にのみ、ロックを取得したいと考えています。そうでない場合は、非共有データを更新する前に、共有データを更新する他のすべての実行中のインスタンスをメソッドがブロックして待機することは望ましくありません。

したがって、Method が行う (一見) 明白なことは、現在のインスタンスの UpdateSharedData の実装が基本クラスの実装をオーバーライドしているかどうかを確認することです。リフレクションを使用しないとこれは不可能であると確信しており、それを行うことはおそらく望ましくありません。

私はこれに対するいくつかの回避策を考えましたが、それらはすべてかなり厄介です:

  • 派生クラスのコンストラクターが設定する保護された bool プロパティを追加し、そのプロパティをチェックしてロックが必要かどうかを確認します。これは、派生クラスからロック コードを隠すという非常にひどい作業を行っています。
  • UpdateSharedData メソッドをデリゲート プロパティにし、派生クラスのコンストラクターでプロパティをプライベート メソッドに設定し、デリゲートが null でない場合にのみロックを取得します。それは良くなりましたが、それでもちょっとひどいです。
0 投票する
1 に答える
1514 参照

c# - コンソールを閉じる

私はGUIが持っていることを知っています

しかし、コンソール アプリケーションで同じことを行うにはどうすればよいでしょうか。

C#/.NET3.5

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

.net - アクセサをオーバーライドして.NETのプロパティに追加することはできますか?

このようなことは可能ですか?

つまり、基本クラスは GET アクセサーのみを持つ仮想プロパティを提供しますが、子クラスは GET をオーバーライドし、SET も提供します。

現在の例はコンパイルされませんが、おそらくここに何かが欠けています。

追加:明確にするために、いいえ、new で再定義したくありません。新しいアクセサを追加したい。基本クラスにないことはわかっているので、オーバーライドできません。わかりました、シンタックス シュガーなしでどのように見えるかを説明してみましょう。