NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: C#- Problem s argumentama

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
GunSpawn
Tvůrce
Avatar
GunSpawn:18.9.2015 22:14

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
Tvůrce
Avatar
GunSpawn:19.9.2015 11:16

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
Odpovídá na GunSpawn
Patrik Valkovič:19.9.2015 11:46

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

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Ř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
Tvůrce
Avatar
Odpovídá na Patrik Valkovič
GunSpawn:19.9.2015 11:51

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 Valkovič:19.9.2015 11:56

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