開発 シールドクラスとは何ですか? -techopediaからの定義

シールドクラスとは何ですか? -techopediaからの定義

目次:

Anonim

定義-シールドクラスとはどういう意味ですか?

C#の封印されたクラスは、どのクラスにも継承できないが、インスタンス化はできるクラスです。

シールクラスの設計意図は、クラスが特殊化されていることを示すことであり、その動作をオーバーライドするために継承を通じて追加機能を提供するためにクラスを拡張する必要はありません。 シールクラスは、プログラム全体で使用する必要のあるロジックをカプセル化するために使用されますが、それを変更することはありません。

シールクラスは、派生クラスがシールクラスで提供される実装を破損する可能性のある意図しない派生を防ぐことにより、セキュリティ上の理由で主に使用されます。 封印されたクラスは基本クラスを形成できないため、封印されたクラスの呼び出しは、封印されたクラスのインスタンスでの仮想メンバー関数の非仮想呼び出しへの呼び出しなど、特定のランタイム最適化を可能にするため、わずかに高速です。 封印されたクラスは、クラスを封印されたタイプから封印されていないクラスに変更する際に互換性を損なうことなく、バージョン管理に役立ちます。

.NETフレームワークライブラリの主要なクラスのいくつかは、主にこれらのクラスの拡張性を制限するために、封印されたクラスとして設計されています。

Techopediaはシールドクラスを説明します

暗黙的に封印される構造体とは異なり、封印されたクラスは、クラスの偶発的な継承を防ぐために、キーワード「封印された」で宣言されます。 シールクラスは、パブリックレベルのアクセシビリティを持つメソッドがある場合にのみ有用です。 抽象クラスは、抽象メソッドおよびプロパティの実装を提供する別のクラスによって派生することを目的としているため、シールクラスを抽象クラスにすることはできません。

たとえば、密封されたクラスDatabaseHelperは、オープンおよびクローズデータベース接続、データのフェッチと更新など、データベース関連のアクションの機能を提供できるプロパティとメソッドを使用して設計できます。派生クラスをオーバーライドすることで改ざんされることなく、封印されたクラスとして設計できます。

シーリングは、拡張性の利点を制限し、ライブラリタイプのカスタマイズを防ぎます。 したがって、クラスは、シールの影響を慎重に評価した後にシールする必要があります。 クラスを封印するために考慮する基準のリストには、次のものが含まれます。
  • クラスは静的です
  • クラスには、機密情報を表す継承されたメンバーが含まれます
  • クラスは、リフレクションメソッドを介してその属性を取得するために照会されます
  • クラスは、シールする必要がある多くの仮想メンバーを継承します
この定義はC#のコンテキストで記述されました
シールドクラスとは何ですか? -techopediaからの定義