Sind abstrakte Methoden intern öffentlich und virtuell in c #?
? Alle Methoden sind standardmäßig privat, und wenn eine abstrakte Methode privat ist, steht sie der abgeleiteten Klasse nicht zur Verfügung und führt zum Fehler "virtual or abstract members cannot be private"
Ich denke, Sie stellen eine andere Frage, als die meisten Leute denken (mit anderen Worten, es scheint, als ob Sie verstehen, was abstract
bedeutet).
Sie können keine private abstrakte Methode deklarieren - der Compiler gibt einen Fehler aus. Diese beiden Klassen werden nicht kompiliert:
%Vor%Der Compiler verhindert, dass Sie eine nutzlose Methode deklarieren, da ein privates abstraktes Member in einer abgeleiteten Klasse nicht verwendet werden kann und keine Implementierung (und daher keine Verwendung) für die deklarierende Klasse hat.
Es ist wichtig zu beachten, dass der Standardzugriffsmodifikator, der vom Compiler auf ein abstraktes Member angewendet wird (wenn Sie selbst keinen angeben) immer noch private
ist, genauso wie es wäre, wenn die Methode nicht abstrakt wäre.
Abstract ist nur eine Art zu sagen: "Ich bin hier, aber niemand hat mir gesagt, was ich noch machen werde." Und da niemand dieses Mitglied implementiert hat, muss jemand das tun. Um das zu tun, müssen Sie diese Klasse erben und dieses Mitglied überschreiben.
Um etwas überschreiben zu können, muss es entweder abstrakt oder virtuell deklariert werden und zumindest für den Erben zugänglich sein. muss als geschützt, intern oder öffentlich gekennzeichnet sein.
Aufgrund von Jon Skeets Argument hier ( What are die Standardzugriffsmodifikatoren in C #? )
Der Standardzugriff für alles in C # ist "der am meisten eingeschränkte Zugriff, den Sie für dieses Mitglied deklarieren könnten"
Es muss "geschützt" sein
Wie von Pieter angegeben, ist der Standardwert immer privat, also:
%Vor%Gibt Compilerfehler
virtuelle oder abstrakte Mitglieder können nicht privat sein
Tags und Links c# abstract-class public access-modifiers private