Detaillierte Erläuterung der Rolle des versiegelten Schlüsselworts in C#

伊谢尔伦
Freigeben: 2017-04-29 14:43:36
Original
2078 Leute haben es durchsucht

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( ) 
{ //... } 
}
Nach dem Login kopieren



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") ; 
} 
}
Nach dem Login kopieren


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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!