Diskuze: Dědičnost
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj
Rozdiel je v tom, že mag by mal mať navyše premenné mana, maxMana a
magickyUtok. Bojovník by nemal byť schopný vykonávať magický útok. Máš
tam zbytočne u bojovnika premenné potrebné pre magický útok.
Na vysvetlenie : Obaja majú ten istý základ ( tie isté schopnosti ), len
mág má navyše magický útok.
Takže pokud to bude
Bojovnik gandaldf= new Mag (...);
Tak je stale jen obycejny bojovník. A pokud
Mag gandalf = new Mag (...);
Tak ma dalsi vlastnosti definovane v tride Mag plus atributy zdedene od
Bojovnika.
Jeste moc nerozumim tomu jak ten prvni bojovnik je vytvoreny, jak muze byt typu
bojovnik a zaroven new Mag? Co je tim mysleno. Mel jsem za to ze pokud se
vytvari instance tak by to melo byt Bojovnik ...= new Bojovnik().
Ah... prepáč nevšimol som
si že pri bojovníkovi je konštruktor z mága...
Takže k tomu prvému príkladu, ktorý si uviedol... áno malo by to byť jedno
či napíšeš
Bojovnik gandalf = new Mag("Gandalf", 60, 15, 12, kostka, 30, 45);
alebo
Mag gandalf = new Mag("Gandalf", 60, 15, 12, kostka, 30, 45);
pretože Bojovnik je rodičovská trieda pre triedu mág...
Ale naopak by to nešlo :
Mag gandalf = new Bojovnik("Gandalf", 60, 15, 12, kostka, 30, 45);
Dalo by sa to prirovnať k tomu, že napr. tvoj otec ťa naučil programovať
a tak vieš programovať aj ty aj on.
Ale ty sa sám naučíš hrať futbal a to vieš len ty... tvoj otec ho nevie
hrať.
Trochu na rozšíření, to, co píšeš jako první typ, je vnější typ,
typ proměnné, to druhé je typ vnitřní, typ instance.
Dám jako příklad karate (pokud řeknu nějakou faktickou blbost a bude tu
nějaký karatista, ignorujte to, děkuji, o tom toto téma není ). Postupně získáváš v
životě zkušenosti, jsi lepší a lepší, tvoje zkušenosti převyšují
tvoje dřívější (-> více metod -> dědění), což je značeno pásky
různých barev (různé třídy, co postupně jedna z druhé dědí). Postupně
jich získáváš víc a víc, máš je ve sbírce, můžeš je nosit. Teď si
představ, že máš černý pásek, a že by ses chtěl dostat do skupiny lidí
(např. pole objektů) s oranžovým páskem, ale aby jsi tam zapadl, musíš se
za ně vydávat... A to i chovínám, nějaké pokročilé techniky by tě
prozradily. Tzn. si vezmeš na sebe oranžový pásek (jméno vnějšího typu)
a jdeš tam (na místo někoho, kam patří člověk s oranžovým páskem -
proměnná), používáš pouze techniky oranžovopásníků (metody). To vše
patří k tomu, jak se chovš na veřejnosti, v té skupině by tě nešlo
rozpoznat od ostatních. Avšak když přijde tvůj kamarád (developer, který
rozumí kódu), se kterým máš někde setkání, tak můžeš odhalit svoje
krytí (přetypování), protože ve skutečnosti máš zkušenosti spojené s
černým páskem (vnitřní typ), může tak s tebou jednat (metody), a když
potřebuješ jít zase někam mezi lidi s černým páskem, tak si můžeš
opět obláct černý pásek a můžeš mezi ty lidi jít (přesun do
proměnné, která má vněší typ černopásníka). Ovšem ostatní ze skupiny
oranžových toto udělat nemohou, protože potřebné zkušenosti (metody)
lidí s černým páskem prostě nemají.
Zobrazeno 7 zpráv z 7.