Hallo liebe Java-Community,
ich habe folgendes Verständnisproblem:
Beim Erstellen von Objekten einer Subklasse mit 'new' kann man ja als Referenzvariable den Typ der Superklasse verwenden, zB:
Die Vorteile (Polymorphie, Wiederverwendbarkeit von Code, ...) verstehe ich, allerdings hat man dann die Einschränkung, dass nur mehr die Methoden, die auch in "Tier" definiert wurden auf das Objekt angewandt werden können (obgleich dann auch die überschriebene Methode der Subklasse ausgeführt wird). Also Methoden, die nur in der Klasse "Hund" implementiert sind, sind nicht mehr aufrufbar (es heißt dann immer, dass "der Compiler sie nicht sehen kann").
Nun verstehe ich nicht für wen oder was diese Einschränkung gut ist. Durch einen (Down-)Cast an beliebiger Stelle kann man diese Einschränkung ja wieder umgehen...
LG
camaro
ich habe folgendes Verständnisproblem:
Beim Erstellen von Objekten einer Subklasse mit 'new' kann man ja als Referenzvariable den Typ der Superklasse verwenden, zB:
Code:
Tier t = new Hund();
Die Vorteile (Polymorphie, Wiederverwendbarkeit von Code, ...) verstehe ich, allerdings hat man dann die Einschränkung, dass nur mehr die Methoden, die auch in "Tier" definiert wurden auf das Objekt angewandt werden können (obgleich dann auch die überschriebene Methode der Subklasse ausgeführt wird). Also Methoden, die nur in der Klasse "Hund" implementiert sind, sind nicht mehr aufrufbar (es heißt dann immer, dass "der Compiler sie nicht sehen kann").
Nun verstehe ich nicht für wen oder was diese Einschränkung gut ist. Durch einen (Down-)Cast an beliebiger Stelle kann man diese Einschränkung ja wieder umgehen...
LG
camaro