erstellt 01.03.04; überarbeitet 15.03.04, 25.03.04, 17.06.04, 07.03.05, 07.07.06, 25.01.11, 03.07.18, 14.12.20, 02.08.21, 13.07.22, 19.02.24;
Das Grusskarten-Beispiel hat in der deutschen Übersetzung einen kleinen Schönheitsfehler. Wir erweitern die abstrakte Klasse Karte
um die Instanzvariable String anrede
und um einen Konstruktor, der die Variablen empfaenger
und anrede
initialisiert.
Karte( String empfaenger, String sex)
Der Instanzvariablen anrede
wird dann entweder der String "Liebe" oder "Lieber" zugewiesen. Wir passen die Subklassen und das Testprogramm entsprechend an.
Liebe Ann, frohe Feiertage! Lieber Bob, Alles Gute zum 55. Geburtstag. Liebe Joan, Herzliche Gruesse und Kuesse. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Zurück zum Inhaltsverzeichnis.
Wir erstellen eine abstrakte Klasse Haustiere
. Die Klasse besteht aus
private
deklariert.)
String name; double futtervorrat; int anzahlTage; // gibt die Anzahl Tage aus, die der Futtervorrat reicht
name
und futtervorrat
initialisiert ( Dieser Kontruktor kann zwar nicht direkt genutzt werden, da die abstrakte Klasse Haustiere
nicht instanziiert werden kann, aber er kann von den Subklassen Katze
und Hund
verwendet werden.)
public void fuettern() { // Hier erfolgt zuerst der Aufruf der Methode sprich(). // Solange der Futtervorrat reicht, wird dann die Methode friss() aufgerufen // und die Anzahl der Tage hochgezaehlt, die der Vorrat reicht. // Implementiert werden die abstrakten Methoden sprich() und friss() erst in den Subklassen. }
public void anzeigen() { // zeigt den Namen des Haustiers an und wie viele Tage der Futtervorrat reicht }
public abstract void friss(); public abstract void sprich();
Wir leiten von der abstrakten Klasse Haustiere
die Klassen Hund
und Katze
ab. Schreiben dann für beide Subklassen einen Konstruktor, der den Konstruktor der Superklasse aufruft. Anschließend implementieren wir in den Subklassen die abstrakten Methoden:
sprich()
gibt "Wuff!" bzw "Miau!" aus.friss()
gibt den Namen des Haustiers mit dem jeweiligen Stand des Futtervorrats aus und verringert den Wert der Instanzvariablen futtervorrat
um 1.0 (Hund) bzw. um 0.5 (Katze).Wir testen das Programm in einer Klasse HaustiereFuettern
. Die Ausgabe sieht dann ungefähr wie folgt aus:
C:\data\java\bsp>java HaustiereFuettern Miau! Minka: 5.0 Minka: 4.5 Minka: 4.0 Minka: 3.5 Minka: 3.0 Minka: 2.5 Minka: 2.0 Minka: 1.5 Minka: 1.0 Minka: 0.5 Der Vorrat fuer Minka reicht 10 Tage. Wuff! Strolchi: 5.0 Strolchi: 4.0 Strolchi: 3.0 Strolchi: 2.0 Strolchi: 1.0 Der Vorrat fuer Strolchie reicht 5 Tage.
Zurück zum Inhaltsverzeichnis.
Ende der Aufgaben