Versiegelte Klasse

Definition - Was bedeutet Sealed Class?

Eine versiegelte Klasse in C # ist eine Klasse, die von keiner Klasse geerbt, sondern instanziiert werden kann.

Die Entwurfsabsicht einer versiegelten Klasse besteht darin, anzuzeigen, dass die Klasse spezialisiert ist und nicht erweitert werden muss, um zusätzliche Funktionen durch Vererbung bereitzustellen und ihr Verhalten zu überschreiben. Eine versiegelte Klasse wird häufig verwendet, um eine Logik zu kapseln, die programmübergreifend verwendet werden muss, jedoch ohne Änderungen daran.

Eine versiegelte Klasse wird hauptsächlich aus Sicherheitsgründen verwendet, indem eine unbeabsichtigte Ableitung verhindert wird, durch die die abgeleitete Klasse die in der versiegelten Klasse bereitgestellte Implementierung beschädigen kann. Da die versiegelte Klasse keine Basisklasse bilden kann, sind Aufrufe an versiegelte Klassen etwas schneller, da sie bestimmte Laufzeitoptimierungen ermöglichen, z. B. den Aufruf virtueller Elementfunktionen auf Instanzen versiegelter Klassen in nicht virtuelle Aufrufe. Die versiegelte Klasse hilft bei der Versionierung, indem sie die Kompatibilität nicht beeinträchtigt, während eine Klasse vom versiegelten Typ zum nicht versiegelten Typ geändert wird.

Einige der Schlüsselklassen in der .NET Framework-Bibliothek sind als versiegelte Klassen konzipiert, hauptsächlich um die Erweiterbarkeit dieser Klassen einzuschränken.

Technische.me erklärt Sealed Class

Im Gegensatz zu einer Struktur, die implizit versiegelt ist, wird eine versiegelte Klasse mit dem Schlüsselwort "versiegelt" deklariert, um eine versehentliche Vererbung der Klasse zu verhindern. Eine versiegelte Klasse kann nur nützlich sein, wenn sie über Methoden mit öffentlicher Zugänglichkeit verfügt. Eine versiegelte Klasse kann keine abstrakte Klasse sein, da die abstrakte Klasse von einer anderen Klasse abgeleitet werden soll, die die Implementierung der abstrakten Methoden und Eigenschaften bereitstellt.

Beispielsweise kann eine versiegelte Klasse, DatabaseHelper, mit Eigenschaften und Methoden entworfen werden, die die Funktionen datenbankbezogener Aktionen bedienen, einschließlich der Verbindung offener und geschlossener Datenbanken, des Abrufens und Aktualisierens von Daten usw. Weil sie wichtige Funktionen ausführt, die dies tun sollten Sie kann nicht durch Überschreiben der abgeleiteten Klassen manipuliert werden, sondern kann als versiegelte Klasse konzipiert werden.

Das Versiegeln schränkt den Vorteil der Erweiterbarkeit ein und verhindert die Anpassung von Bibliothekstypen. Daher muss eine Klasse versiegelt werden, nachdem die Auswirkungen der Versiegelung sorgfältig abgewogen wurden. Die Liste der Kriterien, die für die Versiegelung einer Klasse berücksichtigt werden müssen, umfasst:

  • Die Klasse ist statisch
  • Die Klasse enthält geerbte Mitglieder, die vertrauliche Informationen darstellen
  • Die Klasse wird abgefragt, um ihre Attribute über die Reflektionsmethode abzurufen
  • Die Klasse erbt viele virtuelle Mitglieder, die versiegelt werden müssen

Diese Definition wurde im Kontext von C # geschrieben