Hi!
Hab da mal eine Verständnisfrage:
Es gibt eine Superklasse 'Figur', die Klasse 'Rechteck' erweitert diese, 'Quadrat' erweitert wiederum 'Rechteck'. Ausserdem erweitert 'Kreis' ebenfalls 'Figur'.
In jeder der genannten Klassen gibt es eine Methode berechneFlaeche. Wobei die Methode in der Klasse Figur nur den Wert 0 zurückgibt. Alle anderen Subklassen überschreiben diese Methode!
Nun werden verschiedenste Objekte von obgenannten Klassen angelegt. Diese werden in der Klasse 'FigurHolder' in einer Arraylist gespeichert. In dieser Klasse gibt es auch eine Methode 'berechneGesamtFlaeche' welche so aussieht:
Jetzt zu meiner Frage:
In dieser Schleife kommt ein Objekt vom Typ 'Figur' zurück. Alle Subklassen sind ebenfalls Figuren, daher ok! Dann wird die Methode getFlaeche() der jeweiligen aus der ArrayList geholten Figur aufgerufen.
ABER! Warum weiss Java, dass es sich z.B. um ein Kreis-Objekt handelt? Durch das Casten, sage ich ja nur, dass es eine Figur ist. Wenn Java sowieso weiss, dass dann die Methode getFlaeche() von Kreis aufgerufen werden muss, also weiss, dass es sich um einen Kreis handelt, warum muss ich dann (Figur) casten??
Danke!
Hab da mal eine Verständnisfrage:
Es gibt eine Superklasse 'Figur', die Klasse 'Rechteck' erweitert diese, 'Quadrat' erweitert wiederum 'Rechteck'. Ausserdem erweitert 'Kreis' ebenfalls 'Figur'.
In jeder der genannten Klassen gibt es eine Methode berechneFlaeche. Wobei die Methode in der Klasse Figur nur den Wert 0 zurückgibt. Alle anderen Subklassen überschreiben diese Methode!
Nun werden verschiedenste Objekte von obgenannten Klassen angelegt. Diese werden in der Klasse 'FigurHolder' in einer Arraylist gespeichert. In dieser Klasse gibt es auch eine Methode 'berechneGesamtFlaeche' welche so aussieht:
Code:
Iterator it = figuren.iterator();
double gesamtFlaeche=0;
while(it.hasNext())
{
gesamtFlaeche+=((Figur)it.next()).getFlaeche();
}
return gesamtFlaeche;
Jetzt zu meiner Frage:
In dieser Schleife kommt ein Objekt vom Typ 'Figur' zurück. Alle Subklassen sind ebenfalls Figuren, daher ok! Dann wird die Methode getFlaeche() der jeweiligen aus der ArrayList geholten Figur aufgerufen.
ABER! Warum weiss Java, dass es sich z.B. um ein Kreis-Objekt handelt? Durch das Casten, sage ich ja nur, dass es eine Figur ist. Wenn Java sowieso weiss, dass dann die Methode getFlaeche() von Kreis aufgerufen werden muss, also weiss, dass es sich um einen Kreis handelt, warum muss ich dann (Figur) casten??
Danke!