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).
Ich weiß, dass es mit zwei Funktionen gemacht werden kann und eine davon ist abstrakt. Bitte beraten ...
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:
execute
anstelle von Execute
heißen soll
SomeInterface
anstelle von someInterface
heißen soll
execute
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:
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.
Tags und Links java inheritance oop