Wenn Sie den Zugriffsmodifizierer public
entfernen, entfernen Sie die Möglichkeit, die Methode new Print()
von B von der Funktion Main
aufzurufen, da sie jetzt standardmäßig auf private
festgelegt ist. Es ist für Main nicht mehr zugänglich.
Die einzige verbleibende Option besteht darin, auf die von A übernommene Methode zurückzugreifen, da dies die einzige zugängliche Implementierung ist. Wenn Sie Print () innerhalb einer anderen B-Methode aufrufen würden, würden Sie die B-Implementierung erhalten, weil Mitglieder von B die private Implementierung sehen würden.
Warum das folgende Programm druckt
%Vor%(wie es sollte)
%Vor%Aber wenn wir das Stichwort 'public' in Klasse B wie folgt entfernen:
%Vor%es beginnt zu drucken
%Vor%?
Wenn Sie das Schlüsselwort public aus Klasse b entfernen, steht die neue Druckmethode außerhalb der Klasse nicht mehr zur Verfügung. Wenn Sie also b.print von Ihrem Hauptprogramm aus ausführen, wird tatsächlich die in A verfügbare öffentliche Methode aufgerufen (Weil b ein a erbt und ein still hat Als öffentlich drucken)
Sie machen die %code% Methode %code% , also ist die einzige verfügbare %code% Methode die vererbte Methode.
Ohne das Schlüsselwort public ist die Methode privat und kann daher nicht von Main () aufgerufen werden.
Die Print2 () -Methode kann sie jedoch aufrufen, da sie andere Methoden ihrer eigenen Klasse sehen kann, selbst wenn sie privat ist.
Wenn Sie den Zugriffsmodifizierer %code% entfernen, entfernen Sie die Möglichkeit, die Methode %code% von B von der Funktion %code% aufzurufen, da sie jetzt standardmäßig auf %code% festgelegt ist. Es ist für Main nicht mehr zugänglich.
Die einzige verbleibende Option besteht darin, auf die von A übernommene Methode zurückzugreifen, da dies die einzige zugängliche Implementierung ist. Wenn Sie Print () innerhalb einer anderen B-Methode aufrufen würden, würden Sie die B-Implementierung erhalten, weil Mitglieder von B die private Implementierung sehen würden.
Wenn Sie das Schlüsselwort public aus Klasse b entfernen, steht die neue Druckmethode außerhalb der Klasse nicht mehr zur Verfügung. Wenn Sie also b.print von Ihrem Hauptprogramm aus ausführen, wird tatsächlich die in A verfügbare öffentliche Methode aufgerufen (Weil b ein a erbt und ein still hat Als öffentlich drucken)
Tags und Links c# inheritance compiler-construction method-hiding