NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Lekce 10 - Aréna s mágem (dědičnost a polymorfismus)

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:23.7.2013 16:53

Jaký je rozdíl mezi důležitými a nedůležitými proměnnými? Asi ten, že ty nedůležité se do programu vůbec nedávají.

Odpovědět
23.7.2013 16:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:23.7.2013 16:57

Beru to jako cesta k souboru je důležitá, ale jméno souboru už důležité tolik není ale je lepší když se zobrazuje název místo celé cesty (jen příklad)

 
Odpovědět
23.7.2013 16:57
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:23.7.2013 17:05

Huh, to mi hlava nebere. Název souboru s cestou je přece objekt. Pokud potřebuji název s cestou, název bez cesty a samotnou cestu, tak k němu napíšu tři gettery.

Většinou je tedy psát nemusím, je to jen příklad.

Odpovědět
23.7.2013 17:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:23.7.2013 17:08

Každý má nějáký svůj styl kterým píše programy, ale sem to zrovna nepatří :)

 
Odpovědět
23.7.2013 17:08
Avatar
Honza
Neregistrovaný
Avatar
Odpovídá na Kit
Honza:23.7.2013 17:31

Asi jsme se nepochopili. U všech atributů, kromě zprava mám protected, ta jediná je private. Mně jde o to, že v třídě Bojovnik mám toto:

private string zprava;
protected void NastavZpravu(string zprava)
{
    this.zprava = zprava;
}

a v poděděné třídě Mag potom volám metodu NastavZpravu:

NastavZpravu(jmeno + " použil magický útok za " + uder + " hp");

a normálně to funguje. Když použiji VratPosledniZpravu u instance třídy Mag, tak se skutečně vrátí ta nově nastavená zpráva. Ale měl jsem za to, že dědic s proměnnými, které jsou nastaveny jako private v předkovi, pracovat nemůže. Takže je to tak, že když je metoda protected, tak lze automaticky přistupovat i ke všem proměnným v ní nebo jak?

 
Odpovědět
23.7.2013 17:31
Avatar
Odpovídá na
Michal Žůrek - misaz:23.7.2013 17:32

protože to nastavuješ uvnitř třídy a tam to dostupné je.

 
Odpovědět
23.7.2013 17:32
Avatar
Honza
Neregistrovaný
Avatar
Odpovídá na Michal Žůrek - misaz
Honza:23.7.2013 17:46

Mohl bys to, prosím, trochu rozvést? Já jsem měl za to, že prostě k atributům private má přístup jenom ta třída sama a nikdo jiný. A aby k tomu mohl přistupovat dědic, tak by musel být protected. Nebo to interně funguje nějak jinak, že si to C# "domyslí", když se mění v protected metodě? Nechci vypadat jako debil, ale není mi to jasné... OOP je pro mě novinka.

 
Odpovědět
23.7.2013 17:46
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:23.7.2013 17:49

Protože jsi zavolal metodu NastavZpravu třídy Bojovnik, která s privátními atributy třídy Bojovnik pracovat může.

Odpovědět
23.7.2013 17:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na
Michal Žůrek - misaz:23.7.2013 18:06

to nevadí jaká je třída, nevadí jaka je metoda (dobře static vadí, ale to je mimo). Prostě to ovlivníš v té třídě kde je příkaz napsán a jedno jestli už je to pak privete nebo protected.

 
Odpovědět
23.7.2013 18:06
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:23.7.2013 18:13

Kdyby byla metoda NastavZpravu ve třídě Mag, tak by to nefungovalo. Dokonce by to nefungovalo ani v případě, kdyby tato metoda byla v obou třídách Mag i Bojovnik, protože metoda ve třídě Bojovnik by byla překryta.

Editováno 23.7.2013 18:14
Odpovědět
23.7.2013 18:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 10 zpráv z 138.