Diskuze: Dedicnost - proc se vola metoda potomka?

Java Java Dedicnost - proc se vola metoda potomka?

Avatar
mnauik
Člen
Avatar
mnauik:

Ahoj, zkoušel jsem si jen tak dědičnost a nevím, proč se volá toString potomka.

Potřebuju vysvětlit dvě věci:

  1. proč se tak děje (vím, že objekty jsou referenční proměnné)
  2. co udělat, aby to vyhodilo AClass?
AClass a = new BClass();
System.out.println((AClass)a);

Výstup:
BClass
ale čekal jsem AClass

Děkuji

Odpovědět 1.5.2014 20:25
minusuj mě, ale zdůvodni to ;)
Avatar
lime
Člen
Avatar
lime:

Uvedom si, že vytváraš inštanciu triedy BClass a nie AClass, takže pri volaní metódy toString() sa zavolá metóda triedy BClass! To pretypovanie, ktoré si spravil ti dovolí použiť metódy triedy AClass (ale takisto BClass, ktorá od nej dedí), keď trieda BClass prepisuje metódu toString() tak použije svoju, ak by ju neprepisovala tak vtedy by použila metódu rodiča a mal by si výstup AClass.

 
Nahoru Odpovědět 3.5.2014 14:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.