Warum dieser Unterschied der Mehrdeutigkeit der Handhabungsmethode in Java & c #? [Duplikat]

7

Ich habe zwei Klassen A & amp; B, wobei B von A abgeleitet ist.

Beide Klassen haben eine Methode mit derselben Signatur. Sie werden auf folgende Weise in Java & amp; c # - & gt;

Im Falle von JAVA:

%Vor%

Dieses Programm erzeugt folgende Ausgabe: -

%Vor%

Im Falle von C #:

%Vor%

Dieses Programm erzeugt folgende Ausgabe: -

%Vor%

Warum unterscheidet sich die Ausgabe?

    
Srinivas Cheruku 06.06.2013, 11:31
quelle

3 Antworten

16

In Java sind die Methoden standardmäßig virtual .
In C # sind Methoden standardmäßig nicht virtual .

Damit sich der C # -Code genauso verhält wie der Java-Code, müssen Sie die Methode virtual in der Basisklasse und override in der abgeleiteten Klasse erstellen.

Oder, damit sich der Java-Code wie der C # -Code verhält, machen Sie die Methode final in der Basisklasse.

    
Daniel Hilgarth 06.06.2013, 11:35
quelle
6

Im Fall von c # müssen Sie die übergeordnete Methode als virtuelle und untergeordnete Methode als überschreiben

definieren %Vor%     
Bunny 06.06.2013 11:34
quelle
2

Diese Zeile:

%Vor%

Ich denke hier, in C # haben Sie ein Beispiel für das Verstecken von Methoden. Vielleicht müssen Sie die Methode explizit als überschrieben deklarieren (zum Beispiel in Java mit der Annotation @Override).

    
Bob Flannigon 06.06.2013 11:35
quelle

Tags und Links