Versiegelt bedeutet auf Chinesisch „versiegelt“. Wie der Name schon sagt, kann die dadurch geänderte Klasse oder Methode nicht vererbt oder überschrieben werden.
Die Rolle des Schlüsselworts „sealed“:
Die Verwendung von „sealed“ in einer Klassendeklaration verhindert, dass andere Klassen diese Klasse erben; die Verwendung des „sealed“-Modifikators in einer Methodendeklaration verhindert, dass erweiterte Klassen dies überschreiben Klassenmethode.
Der versiegelte Modifikator wird hauptsächlich verwendet, um eine unbeabsichtigte Ableitung zu verhindern, kann aber auch bestimmte Laufzeitoptimierungen fördern. Da eine versiegelte Klasse niemals abgeleitete Klassen haben wird, können Aufrufe an virtuelle Funktionsmitglieder von Instanzen der versiegelten Klasse insbesondere zur Verarbeitung in nicht virtuelle Aufrufe konvertiert werden.
Versiegelte Klasse:
Eine versiegelte Klasse verwendet den versiegelten Modifikator in ihrer Deklaration, um zu verhindern, dass die Klasse von anderen Klassen geerbt wird. Wenn Sie versuchen, eine versiegelte Klasse als Basisklasse für andere Klassen zu verwenden, gibt C# einen Fehler aus. Natürlich kann eine versiegelte Klasse nicht gleichzeitig eine abstrakte Klasse sein, da Abstraktionen immer vererbt werden wollen.
In welchen Situationen werden Siegel verwendet? Tatsächlich ist es unmöglich, eine abgeleitete Klasse innerhalb einer versiegelten Klasse zu haben. Wenn in einer versiegelten Klasseninstanz eine virtuelle Mitgliedsfunktion vorhanden ist, kann die Mitgliedsfunktion in eine nicht virtuelle Mitgliedsfunktion konvertiert werden und der Funktionsmodifikator virtuell wird nicht mehr wirksam.
Schauen wir uns das folgende Beispiel an:
abstract class AbstractClass { public abstract void Method( ) ; } sealed class SealedClass: AbstractClass { public override void Method( ) { //... } }
Wenn wir versuchen, den folgenden Code zu schreiben
class OtherClass: SealedClass
{
}
C# weist Sie auf diesen Fehler hin und teilt Ihnen mit, dass SealedClass eine versiegelte Klasse ist und Sie nicht versuchen können, eine Klasse von SealedClass abzuleiten.
Versiegelte Methode:
C# schlägt außerdem das Konzept der versiegelten Methode (sealedmethod) vor, um zu verhindern, dass die Methode in abgeleiteten Klassen der Klasse, in der sich die Methode befindet, überladen wird. Sie können den versiegelten Modifikator für eine Methode verwenden. Dann nennen wir die Methode eine versiegelte Methode.
Nicht jede Mitgliedsmethode einer Klasse kann als versiegelte Methode verwendet werden. Um als versiegelte Methode verwendet zu werden, muss die virtuelle Methode der Basisklasse überladen und eine bestimmte Implementierungsmethode bereitgestellt werden. Daher wird in einer Methodendeklaration der versiegelte Modifikator immer zusammen mit dem Override-Modifikator verwendet. Bitte schauen Sie sich den folgenden Beispielcode an:
using System ; class A { public virtual void F( ) { Console.WriteLine("A.F") ; } public virtual void G( ) { Console.WriteLine("A.G") ; } } class B: A { sealed override public void F( ) { Console.WriteLine("B.F") ; } override public void G( ) { Console.WriteLine("B.G") ; } } class C: B { override public void G( ) { Console.WriteLine("C.G") ; } }
Klasse B überlädt beide virtuellen Methoden in der Basisklasse A. Methode F verwendet den versiegelten Modifikator und wird zu einer versiegelten Methode. Die G-Methode ist keine versiegelte Methode, daher kann in der abgeleiteten Klasse C von B die Methode G überladen werden, die Methode F jedoch nicht überladen werden
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Rolle des versiegelten Schlüsselworts in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!