問題タブ [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.

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

c# - クラス フィールドをシールできますか?

MSDN C# プログラミング ガイドでは、次のことが言及されています。

「基本クラスの仮想メンバーをオーバーライドしている派生クラスのクラス メンバー、メソッド、フィールド、プロパティ、またはイベントは、そのメンバーをシール済みとして宣言できます。」

メソッド、プロパティ、およびイベントに関する上記のステートメントは理解できますが、クラスのフィールドに対して上記のステートメントはどのように有効ですか? プログラムでこれを試してみたところ、フィールドを仮想にすることはできないため、オーバーライドできないことが確認されました。では、どうすれば封印できるのでしょうか。それができない場合、MSDN リファレンスからの上記のステートメントはフィールドの言及を省略すべきでしょうか?

ありがとう。

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

java - アンドロイドの封印された方法

私は初心者で、封印されたキーワードと参照された封印されたオブジェクトについて心配しています。私はグーグルで検索しましたが、Androidでsealedメソッドを使用する簡単な例を見つけることができませんでした.Iのようなものを試しました

この封印された方法の使い方を誰か教えてください。前もって感謝します。

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

c# - ルールC#のオーバーライドに関する混乱

メソッドのオーバーライドと OOP 原則の妥当性に関して、私は少し混乱しています。シーリング、シャドウイング、オーバーライド、仮想などに関するすべてを知っていますが、シナリオに出くわして混乱しました。私が持っているとします:

これまでに調べたすべてのことによると、 (抽象クラ​​スで)仮想または抽象として宣言されたメソッドは、子クラスでオーバーライドキーワードを使用してオーバーライドできます。これによると、上記のコードは完璧に機能します。virtualキーワードを削除してから、 overrideキーワードを使用してメソッドをオーバーライドしようとすると、コンパイラは次のようなエラーを返します。

virtual、abstract、または override とマークされていないため、継承されたメンバー 'inheritence.classA.sayhello()' をオーバーライドできません

次に、子クラスからオーバーライドキーワードを削除し、実装を次のように提供しました。

この場合、メソッドをオーバーライドできます。仮想でも抽象でもないメソッドをオーバーライドできます。だから、私の質問は:

1. OOP の原則に違反していませんか? 親で仮想としてマークされていないメソッドをオーバーライドできるためです。

2.このようにメソッドをオーバーライドできるのはなぜですか? virtualとさえマークされていないのはどれですか?

3. classAメソッドからvirtualキーワードを削除すると、 classBでそのメソッドをオーバーライドしようとしたときに、 classAで封印されたメソッドのように感じました。(先ほどコンパイラ エラーについて述べたように)。子クラスがそれをオーバーライドしないようにvirtualを削除すると、オーバーライドキーワードを削除して、子クラスがそれを巧みにオーバーライドできるのはなぜですか? これは、 sealedキーワードが対象として設計されている場合にのみ当てはまりますか?

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

c# - 抽象クラスをシールまたは静的にできないのはなぜですか?

抽象クラスをシールまたは静的にできないのはなぜですか?

また、C#で静的クラスをシールされた抽象として宣言するのはなぜですか?という質問についても混乱しています。.

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

c# - シールドはオーバーライドで使用する必要がありますか?

msdnシールから (C# リファレンス)

「メソッドまたはプロパティに適用する場合、sealed 修飾子は常にオーバーライドで使用する必要があります。」

常にオーバーライドで使用する必要があるのはなぜですか?

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

c# - 「仮想」がオプションの場合、C#で「封印」の目的は何ですか?

クラスに仮想メソッドがない場合、クラスを継承しても、インスタンスをサブクラスのインスタンスとして明示的に参照しないコードに影響を与える方法はわかりません。

それよりも

したがって、なぜsealed存在するのですか?

何かを宣言していない場合virtual(シールされたクラスで行う意味がないと思います)、それが防ぐのは、(たとえば)ListViewItemその情報がオーバーライドされたメソッドとは異なり、そのサブクラスを念頭に置いて書かれていないコードには影響しません。

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

c# - C#のシールクラス内でシールクラスまたは静的クラスを宣言できますか?

これらは 2 つの別個の質問です。

  1. シールとマークされたクラスは、シールされたクラス内に存在できますか?
  2. staticとしてマークされたクラスは、シールされたクラス内に存在できますか?

これらの質問は、中心的な概念をよりよく理解するためのものです。上記の概念の実際の使用法を強調できる人はいますか?

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

c# - システム メソッドのオーバーロードを作成できますか?

LargeWholeNumber整数値に独自のクラスを使用しています。System.Mathクラスには、適用可能なタイプのメソッドが多数ありますMax。インスタンスもMax比較するこのメソッドのオーバーロードを作成できますか?LargeWholeNumber

Mathから継承する独自のクラスを作成しようとしましSystem.Mathたが、 と表示されます"Cannot inherit from sealed class 'Math'"

アドバイスをいただきありがとうございます。

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

c# - .Net 自体に継承できないクラスがありますか?

C# にサンプルがあるかどうか知りたいです。商用目的ではなく、継承を禁止する単一のサンプルは考えられないので、C# 自体の実際の例をいくつか知りたいと思います。

シールされたクラスについて知っています。暗黙的にシールされている値の型や構造体ではなく、c# 自体でいくつかの例を探しています。