Ja. Da die Subklasse keine Methode mit der gleichen Signatur und dem gleichen Rückgabetyp definiert, muss sie als abstrakt deklariert werden. Es ist OK eine abstrakte Subklasse einer abstrakten Superklasse zu haben.
Wir werden die Klassenhierarchie des vorherigen Kapitels verwenden,
um dieses Konzept zu veranschaulichen.
Die Abbildung zeigt, dass die Klasse Karte
eine abstrakte Klasse ist (die deshalb nicht instanziiert werden kann.)
Karte
hat eine einzige abstrakte Methode, gruss()
.
Die anderen drei Klassen sind gewöhnliche Klassen, die instanziiert werden können.
Sie erben von Karte
, also muss jede von ihnen eine gruss()
Methode definieren, die nicht abstrakt ist.
(Rückblick:) Angenommen, dass eine Methode wie hier aufgerufen wird:
referenzVariable.gruss()
Was bestimmt welche Methode ausgeführt wird? Die Klasse der Referenzvariablen oder die Klasse des Objekts?