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