Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Preedy
Člen
Avatar
Preedy:10.3.2013 16:58

čus, mám bázovou třídu a v ní metody(virtuální) z této třídy dědím a do zděděné třídy připíšu další metody a "ouvrajdnu" ty virtuální. Vytvořím si instanci zděděné třídy a chci zavolat ty metody, ale jdou mi zavolat jenom ty override, ale ty které jsou jenom v té zděděné třídě(všechny metody jsou veřejné) mi zavolat nejdou :( Nevíte v čem je chyba(určitě to bude zas nějaká blbost)?? dík

 
Odpovědět
10.3.2013 16:58
Avatar
Odpovídá na Preedy
Luboš Běhounek Satik:10.3.2013 17:05

Pošli asi ukázku toho kódu, tam to bude snad hned zřejmé :)

Nahoru Odpovědět
10.3.2013 17:05
https://www.facebook.com/peasantsandcastles/
Avatar
Preedy
Člen
Avatar
Preedy:10.3.2013 17:21
public abstract class Zvire
 {
     protected string zvuk;
     public Zvire(string zvuk)
     {
         this.zvuk = zvuk;
     }
     public virtual string Zvuk()
     {
         return this.zvuk;
     }
 }
 public class Pes : Zvire
 {
     private bool zije;
     public Pes(string zvuk)
         : base(zvuk)
     {
         this.zvuk = zvuk;
     }
     public override string Zvuk()
     {
         return base.Zvuk();
     }
     public bool Zije
     {
         get
         {
             return this.zije;
         }
     }
 }
class Program
   {
       static void Main(string[] args)
       {
             List<Zvire> zvirata = new List<Zvire>();
             zvirata.Add(new Pes("haf"));
             zvirata[0].Zije() - nejde zavolat, Zvuk() - jde zavolat
       }
   }
 
Nahoru Odpovědět
10.3.2013 17:21
Avatar
Preedy
Člen
Avatar
Preedy:10.3.2013 17:21

asi takhle viz. nahore

Editováno 10.3.2013 17:22
 
Nahoru Odpovědět
10.3.2013 17:21
Avatar
Fugiczek
Tvůrce
Avatar
Odpovídá na Preedy
Fugiczek:10.3.2013 17:26

Mas List zvirat a ti maji metodu jen zvuk(). Kdyby jsi mel List psu pujde ti volat i metoda zije().

 
Nahoru Odpovědět
10.3.2013 17:26
Avatar
Preedy
Člen
Avatar
Odpovídá na Fugiczek
Preedy:10.3.2013 17:30

aha, ale když mi tam šli hodit psi, tak jsem myslel že vlastost Zije pujde zavolat

 
Nahoru Odpovědět
10.3.2013 17:30
Avatar
Fugiczek
Tvůrce
Avatar
Odpovídá na Preedy
Fugiczek:10.3.2013 17:36

Udelal jsi si List zvirat takze muzes u polozek toho listu vyuzit vsechny vlastnosti zvirat. Muzes do toho Listu dat jakehokoliv potomka zvirete, ale muzes vyuzit jen vlastnosti zvirete. Pokud chces volat metodu zijes muzes si to pri ziskavani polozky pretypovat, ale musis si byt jistej ze zrovna na tom indexu je pes, jinak ti to vyhodi nejakou vyjimku ale toto by se nemelo delat :-D

 
Nahoru Odpovědět
10.3.2013 17:36
Avatar
Preedy
Člen
Avatar
Odpovídá na Fugiczek
Preedy:10.3.2013 17:44

dík, zkusím to přes to přetypování

 
Nahoru Odpovědět
10.3.2013 17:44
Avatar
Odpovídá na Preedy
Luboš Běhounek Satik:10.3.2013 17:45
if (zvirata[0] is Pes)
{
    (zvirata[0] as Pes).Zije();
}
Nahoru Odpovědět
10.3.2013 17:45
https://www.facebook.com/peasantsandcastles/
Avatar
Preedy
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
Preedy:10.3.2013 17:51

:D přesně takhle jsem to taky uudělal

 
Nahoru Odpovědět
10.3.2013 17:51
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 10.