Hallo Forum,
entschuldigt bitte meine eventuell nicht gut formulierten Sätze. Ich bin neu bei Java (zwei Wochen) und frischling in diesem Forum.
Ich habe folgende Frage: Wie kann es sein, dass mit polymorphen Referenzvariablen der Aufruf von überladenen Methoden funktioniert und der nicht überladenen eben nicht?
Folgendes Beispiel:
Warum funktioniert das Fressen wie ein Hund mit h.fressen(), aber bellen wird nicht gefunden? Wie kann die JVM das Objekt Hund bei der Methode fressen() als Hund identifizieren und beim bellen() nicht? Ich hatte mir vorgestellt, dass die JVM Objekte anhand ihrer Referenzvariablen erkennt und nicht anhand ihrer Instanzvariablen, weil diese eben nur Werte sind, die der Programmierer vergibt. Woher soll die JVM wissen, wenn der String art = "Dackel"; ist, dass es sich um einen Hund handelt?
entschuldigt bitte meine eventuell nicht gut formulierten Sätze. Ich bin neu bei Java (zwei Wochen) und frischling in diesem Forum.
Ich habe folgende Frage: Wie kann es sein, dass mit polymorphen Referenzvariablen der Aufruf von überladenen Methoden funktioniert und der nicht überladenen eben nicht?
Folgendes Beispiel:
Code:
public class Tier{
public void fressen(){
System.out.println("Ich FRESSE wie ein TIER.");
}
}
public class Hund extends Tier{
public void fressen(){ //überschriebene Methode
System.out.println("Ich FRESSE wie ein HUND.");
}
public void bellen(){ //neue Methode; wurde nicht geerbt
System.out.println("Ich BELLE wie ein HUND.");
}
}
public class Main{
public static void main(String [] args){
Tier h = new Hund(); //Referenzvariable aus Tier und Objekt ist ein Hund
h.fressen(); //frisst wie ein Hund
h.bellen(); //bellen wird nicht gefunden für h, weil eben Datentyp Tier
}
}
Warum funktioniert das Fressen wie ein Hund mit h.fressen(), aber bellen wird nicht gefunden? Wie kann die JVM das Objekt Hund bei der Methode fressen() als Hund identifizieren und beim bellen() nicht? Ich hatte mir vorgestellt, dass die JVM Objekte anhand ihrer Referenzvariablen erkennt und nicht anhand ihrer Instanzvariablen, weil diese eben nur Werte sind, die der Programmierer vergibt. Woher soll die JVM wissen, wenn der String art = "Dackel"; ist, dass es sich um einen Hund handelt?
Zuletzt bearbeitet: