Ich habe eine Verwirrung, die ich auflösen möchte. In C # können nur Basisklassenmethoden mit dem virtual
-Tag in abgeleiteten Klassen überschrieben werden. Basisklassenmethoden ohne das virtual
-Tag können nicht überschrieben werden. Im besten Fall können abgeleitete Klassen Basisklassenmethoden mit new
ausblenden. Dann haben wir sealed
Methoden, die auch nicht in Basisklassen überschrieben werden können.
Was ist also der Unterschied zwischen einer versiegelten Methode und einer nicht-virtuellen Standardmethode?
Eine weitere verwandte Frage. Kann die Basisklasse sealed
-Methoden in abgeleiteten Klassen mit new
?
sealed
verhindert ein weiteres Überschreiben der virtuellen Methoden in der Kette. Sie können sealed
nur für Methoden definieren, die überschrieben werden. Sehen Sie sich die Dokumentation für sealed
an: Ссылка
Sie geben ein gutes Beispiel für eine versiegelte Verwendung:
%Vor% In diesem Fall kann jeder, der von B
ableitet, G
überschreiben, aber nicht F
.
Sealed-Methoden können nur Methoden sein, die eine Methode der Basisklasse überschreiben, sodass kein weiteres Überschreiben möglich ist.
Aus der Dokumentation:
Wenn eine Deklaration einer Instanzmethode einen versiegelten Modifikator enthält, Methode soll eine versiegelte Methode sein.
Wenn eine Instanzmethode Die Deklaration enthält den versiegelten Modifikator, es muss auch die überschreiben Modifikator.
Dies ist für virtuelle Methoden nicht erforderlich.
Tags und Links c#