Wie überschreibt man eine Methode in Java, hat aber immer noch teilweise Funktionalität der übergeordneten Methode

8

Diese Frage wurde während des Vorstellungsgesprächs, Java-Entwicklung, Studentenposition gestellt.

%Vor%

Die Frage ist:

Neuer Entwickler wurde gebeten, eine Klasse zu erstellen, die Klasse A erweitert und eine Methode namens Execute erstellt. Diese Methode wird etwas bewirken. Wie sollten wir den obigen Code umschreiben, um eine Ausgabe "start process" zu erhalten, wenn die Methode Execute aufgerufen wird (Natürlich sollte das Drucken nicht in Klasse B erfolgen).

%Vor%

Ich weiß, dass es mit zwei Funktionen gemacht werden kann und eine davon ist abstrakt. Bitte beraten ...

    
Victor 30.01.2012, 12:30
quelle

3 Antworten

10

Dies ist ein Beispiel für das Vorlagenmuster . Die abstrakte Superklasse A erlegt der Struktur die Verarbeitung auf, indem sie die "Standard" -Teile ausführt - in diesem Fall etwas druckt - und dann die konkreten Implementierungen der Unterklasse aufruft, um die tatsächliche / spezifische Verarbeitung durchzuführen:

%Vor%

Es wäre üblicher für:

  • Die Methode, die execute anstelle von Execute heißen soll
  • Die Schnittstelle, die SomeInterface anstelle von someInterface heißen soll
  • Die Schnittstelle für die Methode execute
Bohemian 30.01.2012 12:41
quelle
2

super ruft die Funktionalität von Ihrer Elternklasse auf.

%Vor%

Die Ausgabe dieses Codes ist

%Vor%     
Ross 04.02.2012 05:22
quelle
0

Entschuldigung.

Ich bin hauptsächlich ein .NET-Entwickler, also sei nicht zu sehr mit mir getrennt, aber ich habe tatsächlich ein Sniplet in C# ausprobiert und habe so etwas gemacht:

Eingabedaten, die wir haben

%Vor%

Das Ding ist (und das sollte auch in Java funktionieren), wenn ich einen Code schreibe, etwa so:

%Vor%

Es wird so gedruckt wie erwartet und erwartet "Startprozess", denn inter.exexute wird die implementierte Version aufrufen (also in A ), auch wenn aktueller Typ B ist.

Hoffe, das hilft.

    
Tigran 31.01.2012 12:40
quelle

Tags und Links