------ Konstruktor class Pes { public string jmeno; public int vaha, vyska; public long KolikLidiPokousal; public Pes(string jmeno, int vaha, int vyska, long KolikLidiPokousal) { this.jmeno = jmeno; this.vaha = vaha; this.vyska = vyska; this.KolikLidiPokousal = KolikLidiPokousal; } public void Stekni() { Console.WriteLine("haf! jmenuju se {0} a uz jsem pokousal {1} lidi!", jmeno, KolikLidiPokousal); } } ... Pes pes = new Pes("alik", 5, 20, 0); pes.Stekni(); ------ Problém s předefinovanou metodou class Pes { public string jmeno; public int vaha, vyska; public long KolikLidiPokousal; public Pes(string jmeno, int vaha, int vyska, long KolikLidiPokousal) { this.jmeno = jmeno; this.vaha = vaha; this.vyska = vyska; this.KolikLidiPokousal = KolikLidiPokousal; } public void Stekni() { Console.WriteLine("haf! jmenuju se {0} a uz jsem pokousal {1} lidi!", jmeno, KolikLidiPokousal); } public void Stekni2x() { Stekni();Stekni(); } } class VelkyPes: Pes { public VelkyPes(string jmeno, int vaha, int vyska, long KolikLidiPokousal) { this.jmeno = jmeno; this.vaha = vaha; this.vyska = vyska; this.KolikLidiPokousal = KolikLidiPokousal; } public void new Stekni() { Console.WriteLine("HAF! HAF! Uz jsem pokousal {1} lidi!", jmeno, KolikLidiPokousal); } } ... VelkyPes pes2 = new VelkyPes("Rokko", 105, 50, 27); pes2.Stekni2x(); ------ Obyčejné a virtuální metody class Pes { ... public virtual void Stekni() { Console.WriteLine("haf! jmenuju se {0} a uz jsem pokousal {1} lidi!", jmeno, KolikLidiPokousal); } public void Stekni2x() { Stekni();Stekni(); } } class VelkyPes: Pes { public VelkyPes(string jmeno, int vaha, int vyska, long KolikLidiPokousal) { this.jmeno = jmeno; this.vaha = vaha; this.vyska = vyska; this.KolikLidiPokousal = KolikLidiPokousal; } public override void Stekni() { Console.WriteLine("HAF! HAF! Uz jsem pokousal {1} lidi!", jmeno, KolikLidiPokousal); } } ------ Abstraktní třída - příklad abstract class Zvire { public string jmeno; public abstract void VydejZvuk(); public Zvire(string jmeno) { this.jmeno = jmeno; } } class Tygr : Zvire { public Tygr(string jmeno): base(jmeno) { } public override void VydejZvuk() { Console.WriteLine("{0}: Uaaaaaa!", jmeno); } } class Ara : Zvire { public Ara(string jmeno) : base(jmeno) { } public override void VydejZvuk() { Console.WriteLine("{0}: Dobrrrrraaa prrrraaaace!!", jmeno); } } class Ryba : Zvire { public Ryba(string jmeno): base(jmeno) { } public override void VydejZvuk() { Console.WriteLine("{0}: ...", jmeno); } } class Had : Zvire { public Had(string jmeno): base(jmeno) { } public override void VydejZvuk() { Console.WriteLine("{0}: Sssssssss...", jmeno); } } ... Zvire[] zoo = new Zvire[100 ]; zoo[0] = new Tygr("Jonatan"); zoo[1] = new Ara("Lora"); zoo[2] = new Ryba("Pepik"); zoo[3] = new Ryba("Julie"); zoo[4] = new Ara("Flint"); zoo[5] = new Tygr("Samba"); for (int i = 0; i < 6; i++) zoo[i].VydejZvuk(); Console.WriteLine(); ------ Static members (metody, data...) patří třídě a ne instanci. abstract class Zvire { public string jmeno; public abstract void VydejZvuk(); public static int PocetZvirat = 0; public Zvire(string jmeno) { this.jmeno = jmeno; PocetZvirat++; } } ... Console.WriteLine(Zvire.PocetZvirat); ... ------ Zapouzdření abstract class Zvire { public string jmeno; public abstract void VydejZvuk(); static private int Pocet = 0; public Zvire(string jmeno) { this.jmeno = jmeno; Pocet++; } public static int PocetZvirat() { return Pocet; } } ... Console.WriteLine(Zvire.PocetZvirat()); ------ Properties - vlastnosti class Zvire { private int pocetNoh; public int PocetNoh { get { return pocetNoh; } set { if ((value == 0) || (value == 2) || (value == 4) || (value == 6) || (value == 8) || (value == 100)) { pocetNoh = value; } } } ... Zvire z = new Zvire(); z.PocetNoh = 2; Console.WriteLine("PocetNoh: {0}", z.PocetNoh); z.PocetNoh = 7; Console.WriteLine("PocetNoh: {0}", z.PocetNoh); z.PocetNoh = 8; Console.WriteLine("PocetNoh: {0}", z.PocetNoh); ...