IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
mnauik
Člen
Avatar
mnauik:1.5.2014 20:25

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:3.5.2014 14:49

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.