Zdravím, chtěl bych se zeptat, pokud třída Pes extends Savec, pak je tedy vytvoření objektu:
Pes Alik = new Pes();
to samé jako:
Savec Alik = new Pes();
?
Děkuji.
Objekt je podobny. Akurat ze cez Cicavca nemozes pristupovat k premennym a metodam ktore boly definovane v psovi. Cize cez Cicavca urcite nezavolas metodu {getDlzkaSrsti(), getPocetNoh(), getPlemeno()}, ktore su definovane iba pre Psa. Ale zato mozes pretipovat premennu cicavec na psa, ak bola vytvorena ako pes, resp. objekt rozsirujuci psa. napr. HunatyPes:
Savec savecAlik = new Pes();
Pes pesAlik = (Pes) savecAlik; //Vdaka tomu ze je to definovane ako pes
#3 ViliX64
to je nevyhoda spatneho ukazkoveho prikladu... daleko zajimavejsi je treba seznam objektu k vykresleni .. treba bod, usecka, primka, kruznice, ctverec, elipsa, .... a spolecne metody jako vykresli()...
pak muzes mit pole geometrickych utvaru pridat do nej vsechny co potrebujes a jednim cyklem zavolat u vsech polozek vykresli()... a kazda polozka diky polymorfizmu vi jak se ma presne vykreslit...
dalsi dobry priklad je treba i menu... mas ruzne typy polozek - zaskrtavaci, spoustece, podmenu... a pokud bys musel vsechno delat rucne bez polymorfizmu, tak mas kod na stovky radek a jeste to nic nedela... v polymorfizmu jen posles objektu ze na nej uzivatel klikl, a je na nem jestli zmeni stav, neco spusti, nebo zobrazi podmenu
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku