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

Člen

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Pošli asi ukázku toho kódu, tam to bude snad hned zřejmé
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
}
}
Mas List zvirat a ti maji metodu jen zvuk(). Kdyby jsi mel List psu pujde ti volat i metoda zije().
aha, ale když mi tam šli hodit psi, tak jsem myslel že vlastost Zije pujde zavolat
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
if (zvirata[0] is Pes)
{
(zvirata[0] as Pes).Zije();
}
Zobrazeno 10 zpráv z 10.