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í.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.
Avatar
Nymik
Člen
Avatar
Nymik:7.2.2017 18:00

Ahoj,

procházím si tutorial javy OOP konkrétněDedicnost ITnetwork
Konkrétně se mi jedná o následující kod

Bojovnik gandalf = new Mag("Gandalf", 60, 15, 12, kostka, 30, 45);
Mag gandalf = new Mag("Gandalf", 60, 15, 12, kostka, 30, 45);

Jaký je prosím rozdíl mezi tím, jestli se použije typ Bojovnik nebo Mag. Zkoušel jsem to v editoru a vypadá to, že Mag může volat všechny proměnné a metody co může bojovník?

Předem děkuji za odpověd :).

 
Odpovědět
7.2.2017 18:00
Avatar
Patrik
Člen
Avatar
Odpovídá na Nymik
Patrik:7.2.2017 19:27

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.

 
Nahoru Odpovědět
7.2.2017 19:27
Avatar
Nymik
Člen
Avatar
Nymik:7.2.2017 20:46

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().

 
Nahoru Odpovědět
7.2.2017 20:46
Avatar
Patrik
Člen
Avatar
Odpovídá na Nymik
Patrik:7.2.2017 22:34

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

Editováno 7.2.2017 22:34
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
7.2.2017 22:34
Avatar
Nymik
Člen
Avatar
Odpovídá na Patrik
Nymik:8.2.2017 11:51

Děkuji za vysvětlení, už tomu přicházím na kloub :)

 
Nahoru Odpovědět
8.2.2017 11:51
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Nymik
pocitac770:8.2.2017 15:35

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í :D ). 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í.

Editováno 8.2.2017 15:37
 
Nahoru Odpovědět
8.2.2017 15:35
Avatar
Nymik
Člen
Avatar
Nymik:8.2.2017 17:31

Děkuji za vyčerpávající popis :). Přišel vhod pro objasnění celkové dědičnosti.

 
Nahoru Odpovědět
8.2.2017 17:31
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 7 zpráv z 7.