public class Job {
public void start() {
System.out.println("los!");
}
public void stop() {
System.out.println("fertig!");
}
public void erledigen() {
start();
stop();
}
public static void zweck() {
System.out.println("bringt Geld");
}
}
public class Programmieraufgabe extends Job {
public void start() {
System.out.println("Kaffee holen!");
}
public void stop() {
System.out.println("Loesung in den Praktomat laden!");
}
public static void zweck() {
System.out.println("rettet die Welt");
}
}
public class Arbeiten {
public static void main(String[] args) {
Job job = new Programmieraufgabe();
job.erledigen();
job.zweck();
}
}
Der Java-Compiler akzeptiert den obigen Quelltext, obwohl
in main() die Methode erledigen() der Klasse Programmieraufgabe aufgerufen wird, aber in Programmieraufgabe keine Methode erledigen() definiert ist, und
in erledigen() der Klasse Job die Methode start() aufgerufen wird, start() jedoch etwas anderes tut als in Job implementiert ist.
Erläutern Sie, warum die oben genannten Punkte keine Probleme darstellen.
Welche Ausgabe produziert das Java-Programm? Erläutern Sie, wie es zu dieser Ausgabe kommt.
Aufgabe 3 [Theorie]
Gegeben ist folgender Java-Quelltext:
Der Java-Compiler akzeptiert den obigen Quelltext, obwohl
in main() die Methode erledigen() der Klasse Programmieraufgabe aufgerufen wird, aber in Programmieraufgabe keine Methode erledigen() definiert ist, und
in erledigen() der Klasse Job die Methode start() aufgerufen wird, start() jedoch etwas anderes tut als in Job implementiert ist. Erläutern Sie, warum die oben genannten Punkte keine Probleme darstellen.
Welche Ausgabe produziert das Java-Programm? Erläutern Sie, wie es zu dieser Ausgabe kommt.
Hinweis: Der Quelltext ist auch in LEA verfügbar.