問題タブ [sealed]
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.
c# - クラス フィールドをシールできますか?
MSDN C# プログラミング ガイドでは、次のことが言及されています。
「基本クラスの仮想メンバーをオーバーライドしている派生クラスのクラス メンバー、メソッド、フィールド、プロパティ、またはイベントは、そのメンバーをシール済みとして宣言できます。」
メソッド、プロパティ、およびイベントに関する上記のステートメントは理解できますが、クラスのフィールドに対して上記のステートメントはどのように有効ですか? プログラムでこれを試してみたところ、フィールドを仮想にすることはできないため、オーバーライドできないことが確認されました。では、どうすれば封印できるのでしょうか。それができない場合、MSDN リファレンスからの上記のステートメントはフィールドの言及を省略すべきでしょうか?
ありがとう。
java - アンドロイドの封印された方法
私は初心者で、封印されたキーワードと参照された封印されたオブジェクトについて心配しています。私はグーグルで検索しましたが、Androidでsealedメソッドを使用する簡単な例を見つけることができませんでした.Iのようなものを試しました
この封印された方法の使い方を誰か教えてください。前もって感謝します。
c# - ルールC#のオーバーライドに関する混乱
メソッドのオーバーライドと OOP 原則の妥当性に関して、私は少し混乱しています。シーリング、シャドウイング、オーバーライド、仮想などに関するすべてを知っていますが、シナリオに出くわして混乱しました。私が持っているとします:
これまでに調べたすべてのことによると、 (抽象クラスで)仮想または抽象として宣言されたメソッドは、子クラスでオーバーライドキーワードを使用してオーバーライドできます。これによると、上記のコードは完璧に機能します。virtualキーワードを削除してから、 overrideキーワードを使用してメソッドをオーバーライドしようとすると、コンパイラは次のようなエラーを返します。
virtual、abstract、または override とマークされていないため、継承されたメンバー 'inheritence.classA.sayhello()' をオーバーライドできません
次に、子クラスからオーバーライドキーワードを削除し、実装を次のように提供しました。
この場合、メソッドをオーバーライドできます。仮想でも抽象でもないメソッドをオーバーライドできます。だから、私の質問は:
1. OOP の原則に違反していませんか? 親で仮想としてマークされていないメソッドをオーバーライドできるためです。
2.このようにメソッドをオーバーライドできるのはなぜですか? virtualとさえマークされていないのはどれですか?
3. classAメソッドからvirtualキーワードを削除すると、 classBでそのメソッドをオーバーライドしようとしたときに、 classAで封印されたメソッドのように感じました。(先ほどコンパイラ エラーについて述べたように)。子クラスがそれをオーバーライドしないようにvirtualを削除すると、オーバーライドキーワードを削除して、子クラスがそれを巧みにオーバーライドできるのはなぜですか? これは、 sealedキーワードが対象として設計されている場合にのみ当てはまりますか?
c# - 抽象クラスをシールまたは静的にできないのはなぜですか?
抽象クラスをシールまたは静的にできないのはなぜですか?
また、C#で静的クラスをシールされた抽象として宣言するのはなぜですか?という質問についても混乱しています。.
c# - シールドはオーバーライドで使用する必要がありますか?
「メソッドまたはプロパティに適用する場合、sealed 修飾子は常にオーバーライドで使用する必要があります。」
常にオーバーライドで使用する必要があるのはなぜですか?
c# - 「仮想」がオプションの場合、C#で「封印」の目的は何ですか?
クラスに仮想メソッドがない場合、クラスを継承しても、インスタンスをサブクラスのインスタンスとして明示的に参照しないコードに影響を与える方法はわかりません。
それよりも
したがって、なぜsealed
存在するのですか?
何かを宣言していない場合virtual
(シールされたクラスで行う意味がないと思います)、それが防ぐのは、(たとえば)ListViewItem
その情報がオーバーライドされたメソッドとは異なり、そのサブクラスを念頭に置いて書かれていないコードには影響しません。
c# - C#のシールクラス内でシールクラスまたは静的クラスを宣言できますか?
これらは 2 つの別個の質問です。
- シールとマークされたクラスは、シールされたクラス内に存在できますか?
- staticとしてマークされたクラスは、シールされたクラス内に存在できますか?
これらの質問は、中心的な概念をよりよく理解するためのものです。上記の概念の実際の使用法を強調できる人はいますか?
c# - システム メソッドのオーバーロードを作成できますか?
LargeWholeNumber
整数値に独自のクラスを使用しています。System.Math
クラスには、適用可能なタイプのメソッドが多数ありますMax
。インスタンスもMax
比較するこのメソッドのオーバーロードを作成できますか?LargeWholeNumber
Math
から継承する独自のクラスを作成しようとしましSystem.Math
たが、 と表示されます"Cannot inherit from sealed class 'Math'"
。
アドバイスをいただきありがとうございます。
c# - .Net 自体に継承できないクラスがありますか?
C# にサンプルがあるかどうか知りたいです。商用目的ではなく、継承を禁止する単一のサンプルは考えられないので、C# 自体の実際の例をいくつか知りたいと思います。
シールされたクラスについて知っています。暗黙的にシールされている値の型や構造体ではなく、c# 自体でいくつかの例を探しています。