NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Dedicnost - proc se vola metoda potomka?

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
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.