Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 10. diel - Aréna s mágom (dedičnosť a polymorfizmus)

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Petr Jadrníček:20.10.2020 20:49

Nefunguje mi nastaveni Tridy Bojovnik jako predek tridy Mag

class Mag: Bojovnik
    {
        private int mana;
        private int maxMana;
        private int MagickyUtok;
    }

    public Mag(string jmeno, int zivot, int utok, int obrana, Kostka kostka, int mana, int MagickyUtok): base(jmeno, zivot, utok, obrana, kostka)
    {
        this.mana = mana;
        this.maxMana = mana;
        this.MagickyUtok = mana;
    }

Nazvy argumentů jsou stále šedé.
Hlasi mi to tuto chybu:
Chyba CS7036 Není dán žádný argument, který by odpovídal požadovanému formálnímu parametru jmeno v Bojovnik.Bojov­nik(string, int, int, int, Kostka).

Můžete mi, prosím, objasnit, co mám špatně?

Protože jinak je tento kurz bez chyby a dost mi pomohl. Tak bych se nechtěl zastavit na této části.
Děkuji

Avatar
Odpovedá na Petr Jadrníček
Zdeněk Dvorský:12.1.2021 16:37

Chyba CS7036 Není dán žádný argument, který by odpovídal požadovanému formálnímu parametru jmeno v Bojovnik.Bojov­nik(string, int, int, int, Kostka <

Tuto chybu to vypíše pokud při vytváření konstruktoru Mag se neodkážu na konstruktor předka pomoci base.
Chybu budeš mít nejspíš již v tom předkovi což je Bojovnik. Mrkni na jeho konstruktor zda odpovídá tomuto:

public Bojovnik(string jmeno, int zivot, int utok, int obrana, Kostka kostka)
{
    this.jmeno = jmeno;
    this.zivot = zivot;
    this.maxZivot = zivot;
    this.utok = utok;
    this.obrana = obrana;
    this.kostka = kostka;
}
Avatar
Odpovedá na Zdeněk Dvorský
Lubomír Mitáš:26.8.2021 16:09

Mám stejný problém. Konstrukotor ve třídě Bojovník mám přesně podle tvého vzoru.

Avatar
Odpovedá na Lubomír Mitáš
Lubomír Mitáš:26.8.2021 16:18

Už jsem na to přišel. Stejně jako tazatel jsem konstruktor třídy Mag měl mimo třídu. Konstruktor jsem musel hodit do složených závorek třídy Mag:

namespace Arena
{
    class Mag: Bojovnik
    {
        private int mana;
        private int maxMana;
        private int magickyUtok;

        public Mag(string jmeno, int zivot, int utok, int obrana, Kostka kostka, int mana, int magickyUtok) : base(jmeno, zivot, utok, obrana, kostka)
        {
            this.mana = mana;
            this.maxMana = mana;
            this.magickyUtok = magickyUtok;
        }
    }


}
Avatar
Tomáš Sobota:22.6.2022 20:33

Ahoj, mám malý dotaz. Ten private atribut zprava z třídy Bojovník ten potomek Mag opravdu zdědí ?(a jen není vidět a není přímo přístupný - jen přes tu metodu předka)?

Odpovedať
Done is better than perfect
Avatar
Jaroslav Drobek:3.8.2022 6:24

Hodnocení:

  • Tělo metody Utoc pro třídu Mag (první verze) nemusí obsahovat počáteční inicializaci proměnné uder hodnotou 0, stačí tuto proměnnou deklarovat.
  • Hláška "{0} použil magii za {1} hp" je zavádějící - použitá magie je jen částí celkové síly úderu.
Avatar
Rostislav Neidhardt:6.2.2023 17:09

Ten tip:"Stejně můžeme volat i jiný konstruktor v té samé třídě
(ne předka), jen místo base použijeme this." ->můžete mi někdo napsat příklad, kus kódu, jak je to myšleno? Zkoušel jsem to různě napsat i pročítal C# manual, ale ve výsledku jsem tuto myšlenku vůbec nepochopil..:)Díky

Avatar
David Kočí
Člen
Avatar
David Kočí:19.9.2023 16:54
Console.WriteLine(((Mag)b).GrafickaMana());

Ahoj, nejspíše jsem to přehlédl v dřívějších lekcích, ale dokáže mi někdo objasnit tuhle zvláštní syntaxi? Jde mi o ty závorky, původně jsem si myslel, že jsou tam navíc, ale správně je pouze tato varianta viz výše... když se na to dívám, prostě mě napadlo, že by se to dalo napsat takhle

Console.WriteLine((Mag)b.GrafickaMana());

ale tohle neprojde...Díky moc za odpověď.

Avatar
David Novák
Tvůrce
Avatar
Odpovedá na David Kočí
David Novák:28.9.2023 8:10

Ahoj Davide, děkujeme za podnět, který jsem předal k řešení.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 138.