Avatar
GunSpawn
Redaktor
Avatar
GunSpawn:

Zdravim vsechny,
Jde o to, ze kdyz mam tridu creature, tak ta ma parametry jako jmeno, zivot, obrana, utok a tak a pak ma par metod. Ja udelam tridu mag, ktera je potomkem tridy creature. Jenze problem nastava ve chvili, kdy ve tride Form vytvorim instance tech objektu a pak chci vyplnit ty labely, protoze ta metoda, ktera ty labely vyplnuje, ma dva parametry a to label, kterej se bude vyplnovat a instanci creature, na ktery se zavola metoda, ktera vse prevede do textu a ulozi to do toho labelu. Jenze kdyz mam instanci maga, tak i kdyz dedi z tridy creature, tak mi to sice nevyhodi chybu, ale nic to nevyplni.
Dekuju za odpoved a omluvte prosim diakritiku, pisu na mobilu.
GunSpawn

Odpovědět 18.9.2015 22:14
Save early, save often, save everything, everywhere, everytime.
Avatar
GunSpawn
Redaktor
Avatar
GunSpawn:

Už jsem si s tím nějak poradil, ale teď bych potřeboval něco jinýho. Jak ve třídě Creature, tak ve třídě Mage, která dědí z Creature, přepisuju metodu ToString(), abych mohl jejich statistiky uložit do Labelu. Nejde to udělat nějak, abych mohl pracovat s proměnými z Creature v Magovi, aniž bych musel měnit jejich modifikátory?
Takhle to vypadá v třídě Creature

private string name;
       /// <summary>
       /// Health of creature
       /// </summary>
       private int health;
       /// <summary>
       /// Maximum health of creature
       /// </summary>
       private int maxHealth;
       /// <summary>
       /// Attack of creature
       /// </summary>
       private int attack;
       /// <summary>
       /// Defense of creature
       /// </summary>
       private int defense;
       /// <summary>
       /// Speed of creature
       /// </summary>
       private int speed;
public override string ToString()
        {
            return String.Format("Name: {0}\nHealth: {1}\nAttack: {2}\nDefense: {3}\nSpeed: {4}", name, health, attack, defense, speed);
        }

A takhle v třídě Mage

/// <summary>
       /// Mana of mage
       /// </summary>
       private int mana;
       /// <summary>
       /// Maximum of mana of mage
       /// </summary>
       private int maxMana;
       /// <summary>
       /// Power of magic attack
       /// </summary>
       private int magicAttack;

Jsou to jen kusy kódu, ne celá třída.
Díky všem za odpovědi.

Nahoru Odpovědět 19.9.2015 11:16
Save early, save often, save everything, everywhere, everytime.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na GunSpawn
patrik.valkovic:

Musíš použít protected modifikátor - k tomu ty modifikátory jsou.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 19.9.2015 11:46
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
GunSpawn
Redaktor
Avatar
Odpovídá na patrik.valkovic
GunSpawn:

Děkuju ti. Jaký je vlastně rozdíl mezi private a protected, kromě toho, že děděná třída ma k protected přístup?

Nahoru Odpovědět 19.9.2015 11:51
Save early, save often, save everything, everywhere, everytime.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Přesně ten, že děděné třídy mají k protected přístup. Žádný jiný, z vnějšku třídy se k proměnné nedostaneš.

Nahoru Odpovědět  +1 19.9.2015 11:56
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
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 5 zpráv z 5.