問題タブ [method-hiding]
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 - 非表示のメソッドを継承する
4 つのメソッドを持つインターフェイスと、インターフェイスを実装するクラスがあります。ここで問題が発生します:「どうすればこれらのメソッドの 2 つだけをインターフェイスから継承し、クラスは抽象化されませんか?」
c# - C# でメソッドの非表示とメソッドのオーバーライドを組み合わせる
これについて満足のいく説明を見つけることができませんでした。したがって、これをSOに投稿すると役立つと思いました。
組み合わせるとどうなるかmethod hiding and overriding in C# ?
以下の例では:
の出力を理解しています
これが私がC#で理解しnew
ていることですoverride
New
- baseclass メソッドを非表示にします。したがって、基底クラスの参照変数が派生クラスのオブジェクトを指していても、その派生クラスがメソッドを隠している場合、出力は基底クラスの出力のみになります。
Override
- 基本クラスのメソッドをオーバーライドします。そのため、派生クラスがメソッドをオーバーライドする場合、基底クラスの参照変数が派生クラス オブジェクトを指していても、出力は派生クラスの出力になります。
しかしここでは、参照変数でさえオブジェクトをBaseClassA
指して、出力を出力できるのでしょうか?DerivedClassC
DerivedClassB
簡単な言葉で説明してください。
ruby - コード スニペットのクラス名と変数名を置き換える
コードの要点を CV に挿入したいと思います。このコードが何であるかを理解しないために、すべてのクラス、メソッド、および変数名をランダムな文字列に自動的に置き換えて (スクリプトまたはオンライン クリエーターを使用して?)、「私の書き方」を示すことができるようにしますが、実際の機能は表示されません。
私はに変更したい:
または、誰かが他の人に「私のコードはどのように見えるが、機能を示さずに」表示するより良い方法を知っているのでしょうか?
前もって感謝します
c# - メソッドの隠蔽と呼び出し決定のオーバーライド
型リファレント オブジェクトに基づくメソッド オーバーライドの場合は、メソッド呼び出しが決定されます。オブジェクトのタイプに基づいてメソッドを非表示にする場合、メソッド呼び出しが決定されます。
オーバーライド+非表示でのメソッド呼び出しの決定を誰かが説明してくれますか?
#1 と #2 は、ランタイム ポリモーフィズムのために Derived.DoIt を呼び出します。
#4 は Derived.DoIt を呼び出しました。これは、d が Dreived 型であるためです (メソッドの隠蔽)。
しかし、なぜ #3 が Derived.DoIt を呼び出したのでしょうか。
c# でオーバーライドと非表示を行う場合の呼び出しシーケンスは何ですか。
前もって感謝します
c# - 継承メンバーのコンパイラ エラーを非表示にできません
私はやろうとしています:
しかし、何らかの理由でコンパイラエラーが発生しています:
CS0533 'Concrete.Execute()' は、継承された抽象メンバー 'Program.Base.Execute() を非表示にします
過去にたくさんのメンバーを隠してきましたが、このサイドケースに出会ったことがなく、ここでかなり戸惑っています. MSDN と Web で長い時間を費やしましたが、この動作については何も見つかりませんでした。
この問題に関する洞察をいただければ幸いです。
これがフィドルです。
java - Liskov の置換の原則は、JAVA でのオーバーライドとどのように関連していますか? 完全な妨害とオーバーライドの違いは何ですか?
プログラミング言語では、子オブジェクトが親の代わりとして機能する必要がある場合でも、(子であることの) 独自のアイデンティティを失わないようにする場合は、親の許可が必要です。そのため、C# または C++ でそのようなメソッドを仮想化します。そして、これは完全な隠蔽になります。完全な非表示は Java でのオーバーライドと見なされますか? 99% の確率で、ここでは間違った概念を持っています。オーバーライドされた関数は、JAVA だけが関係しているのと同じように完全に隠蔽できますか?
c# - UserControl に渡された継承された ViewModel は子 ViewModel として扱われます
Button.xaml で定義されている 2 つのボタンを含む View MainWindow.xaml があります。IsVisible
ボタンは、ボタンが表示されるかどうかを定義するプロパティにバインドされます。
MainWindow.xaml:
ボタン.xaml:
Button には、 と の 2 つの ViewModel がButtonViewModel
ありButtonViewModelChild
ます。
ButtonViewModelChild
から継承しButtonViewModel
ます。どちらも次のIsVisible
プロパティを提供します。
ボタンビューモデル:
ButtonViewModelChild:
MainWindow.xaml の ViewModel には、プロパティButtonViewModel1
とButtonViewModel2
. これらのプロパティは次のようになります。
ButtonViewModel
がボタンの DataContext として使用されている場合、ボタンは非表示になり、 が使用されている場合ButtonViewModelChild
は表示されます。
ButtonViewModel1 を DataContext として使用するボタンは を取得しButtonViewModel
、他のボタンは を取得すると仮定しましたButtonViewModelChild
。したがって、最初のボタンは表示されず、2 番目のボタンは表示されます。ただし、両方のボタンが表示されます。ここでWPFは何をしますか? 明らかに、インスタンスの継承されたビューを両方とも使用します。作成されたインスタンスの型ではなく、プロパティの戻り値の型を使用するように WPF に指示する方法はありますか?
メソッドの非表示がベスト プラクティスではないことは承知しています。おそらくデザインを変更しますが、なぜ結果が期待どおりにならないのか興味があります.