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

Diskuze – Lekce 9 - 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
Odpovídá na patrik.hrnciar
Karel Stehlík:26.7.2019 20:02

Tak si tu podmínku v metodě "grafickyUkazatel" ve třídě "Bojovnik" změň takto:

if ((pocet == 0) && (nazivu()) && (aktualni != 0))

Když to v podmínce projde až k tomu parametru metody "aktualni", je jasné, že v případě hodnoty 0 musí jít o manu, jinak by se podmínka ukončila už při testování metody "nazivu()", která by v případě nulového života byla false.

 
Odpovědět
26.7.2019 20:02
Avatar
Michal Richter:13.9.2019 14:18

Chybička v textu, místo Arena.java má být Program.java:
"Přesuňme se nyní do Program.java a druhého bojovníka (Shadow) změňme na mága, např. takto:"

 
Odpovědět
13.9.2019 14:18
Avatar
Gemy
Člen
Avatar
Gemy:24.5.2020 17:07

Nějaké vysvětlení prosím pro formát(%1$-) ?

Odpovědět
24.5.2020 17:07
Člověk stvořil logiku, a proto jedná v afektu.
Avatar
Gemy
Člen
Avatar
Odpovídá na Gemy
Gemy:24.5.2020 18:15

Už jsem pochopil format() ... bože to je těžká bodel :-D

String s = "X";
System.out.printf("%-"+(s.length()+1)+"s&%<"+(s.length()+1)+"s\n", s);
Odpovědět
24.5.2020 18:15
Člověk stvořil logiku, a proto jedná v afektu.
Avatar
x.listo
Tvůrce
Avatar
x.listo:26.6.2021 20:43

Na vysvětlenou tohoto řádku

String.format("%1$-" + (celkem + 1) + "s", s)

Dobře jsem to pochopil podle tohoto tutoriálu na javatpoint.com

V podstatě se jedná od rozšíření %s. Vložením 1$ za znak procento. Vkládáme hodnotu z prvního parametru, tady je to proměnná s. Při použití jen jednoho parametru jej můžeme vynechat. Symbol pomlčka určuje, že se mezery doplní na pravou stranu. Potom následuje číslo, které udává celkový počet znaků. Zde je doplněno z proměnné "celkem+1".

Na jednoduchou ukázku

String s1 = "DlouheSlovo";
String s2 = "DruheSlovo ";

//doplní mezery na pravou stranu, do celkové délky 40 znaků
System.out.printf("|%-40s|\n",s1);
//doplní mezery na levou stranu, do celkové délky 40 znaků
System.out.printf("|%40s|\n",s1); znaků
//dosadí text z druhého a pak z prvního parametru, ke každému doplní 20 znaků
System.out.printf("|%2$20s%1$20s|\n",s1,s2);
//dosadí text z prvního a pak z druhého parametru, ke každému doplní 20 znaků
System.out.printf("|%1$20s%2$20s|\n",s1,s2);
//stejné jako předchozí, jen u prvního parametru doplní mezery na pravou stranu
System.out.printf("|%1$-20s%2$20s|\n",s1,s2);

Výsledek`

|DlouheSlovo                             |
|                             DlouheSlovo|
|         DruheSlovo          DlouheSlovo|
|         DlouheSlovo         DruheSlovo |
|DlouheSlovo                  DruheSlovo |
 
Odpovědět
26.6.2021 20:43
Avatar
Honza
Člen
Avatar
Honza:7.8.2021 10:53

Ahoj, chtěl bych se zeptat, co se stane s atributama, které jsou jen v potomkovy a předkovy ne:

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

např. když bych nastavil atributy mága na public a vypsal je v jiné třídě

System.out.println(gandalf.mana);

(vím, že se to nemá, ale nevím, jak bych se jinak zeptal :-D ), tak to nepůjde, ale když bych to chtěl vypsat ve třídě Mág.java tak to jde, to mám jako chápat, že ta reference v tomto případě odkazuje pouze na atributy společné ? a ve třídě Mág ? To jsou ty data uložený v atributech té instance, ale nelze k nim přistupovat přes referenci (typu Bojovnik), ale pouze přes třídu ve které byly deklarovány? Děkuji :-)

 
Odpovědět
7.8.2021 10:53
Avatar
Atrament
Člen
Avatar
Odpovídá na Honza
Atrament:7.8.2021 12:17

Předek neví nic o extra atributech a metodách potomka, takže pokud gandalf je definovaný jako Bojovnik tak bude jenom 'vědět' o metodách a atributech Bojovnika. Jelikož jsi ale udělal new Mag a Mag je potomek Bojovnika, tak ty informace tam jsou a můžeš se k nim dostat tak, že gandalfa přetypuješ na Maga, to je vysvětleno dále v kurzu...

System.out.println(((Mag) gandalf).mana);
 
Odpovědět
7.8.2021 12:17
Avatar
Robert Vyskup:21.8.2021 21:34

Jen taková technická, přece nemusíme měnit

public String graficky ukazatel

na protected. Když je public tak k němu má přece potomek přístup stejně jako další třídy kde má Bojovnik instanci. Chápu, že chceme pak tu novou metodu chránit tak ji dáme protected. Ale klidně to přece mohlo zůstat public. V textu je to napsané tak, jako bychom tu metodu v potomkovi nemohli použít pokud nebude protected.

 
Odpovědět
21.8.2021 21:34
Avatar
Karel Potácel:12.10.2021 18:38

S tímto příkladem mám problém. nemohu v netbeans zprovoznit dědičnost. nevím proč mě to háže chybu.

 
Odpovědět
12.10.2021 18:38
Avatar
Atrament
Člen
Avatar
Odpovídá na Karel Potácel
Atrament:12.10.2021 19:08

Když klikneš na tu žárovičku s červenou tečkou tak ono ti to nabídne řešení, případně aspoň řekne co se tomu nelíbí...

 
Odpovědět
12.10.2021 19:08
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 91.