Ich verstehe folgendes Beispiel für Polymorphie nicht. Welchen Vorteil hat es den Hund als Tier zu deklarieren?
statt
Ich dachte das ist damit die Methode untersuchen in der Klasse Tierarzt auch sowohl die Katze als auch den Hund als Parameter akzeptiert, weil eigentlich werden ja nur Tiere als Parameter akzeptiert und keine Hunde. Ich habe aber festgestellt, dass die Methode auch Hunde und Katzen akzeptiert die mit Hund bzw. Katze deklariert wurden (wahrscheinlich weil eben beide von Tier abgeleitet sind).
Dann verstehe ich aber nicht welchen Vorteil diese Deklaration haben soll?
Vielleicht kann einer helfen, danke!
Java:
Tier hund = new Hund();
statt
Code:
Hund hund = new Hund();
Ich dachte das ist damit die Methode untersuchen in der Klasse Tierarzt auch sowohl die Katze als auch den Hund als Parameter akzeptiert, weil eigentlich werden ja nur Tiere als Parameter akzeptiert und keine Hunde. Ich habe aber festgestellt, dass die Methode auch Hunde und Katzen akzeptiert die mit Hund bzw. Katze deklariert wurden (wahrscheinlich weil eben beide von Tier abgeleitet sind).
Dann verstehe ich aber nicht welchen Vorteil diese Deklaration haben soll?
Code:
Tier hund = new Hund();
Vielleicht kann einer helfen, danke!
Code:
class Tierarzt {
public void untersuchen(Tier tier) {
System.out.println("Das Tier wurde untersucht.");
}
class Tier {
public void sprechen() {
System.out.println("Das Tier spricht.");
}
}
class Hund extends Tier {
public void sprechen() {
System.out.println("Wuff!");
}
}
class Katze extends Tier {
public void sprechen() {
System.out.println("Miau!");
}
}
public class TestTier {
public static void main(String[] args) {
Tier hund = new Hund();
Tier katze = new Katze();
hund.sprechen();
katze.sprechen();
Tierarzt tierarzt = new Tierarzt();
tierarzt.untersuchen(hund);
tierarzt.untersuchen(katze);
}
}