1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4:
5: namespace TeoriePolymorfizmus
6: {
7: class Rodic
8: {
9: public void nevirtualniMetoda()
10: {
11: Console.WriteLine("Jsem nevirtualni metoda rodice");
12: }
13:
14: public virtual void virtualniMetoda()
15: {
16: Console.WriteLine("Jsem virtualni metoda rodice");
17: }
18: }
19:
20: class Potomek : Rodic
21: {
22: public void nevirtualniMetoda()
23: {
24: Console.WriteLine("Jsem nevirtualni metoda potomka");
25: }
26:
27: public override void virtualniMetoda()
28: {
29: Console.WriteLine("Jsem prepsana metoda");
30: }
31:
32: }
33:
34: class Program
35: {
36: static void Main(string[] args)
37: {
38:
39: Potomek a = new Potomek();
40: a.nevirtualniMetoda();
41: a.virtualniMetoda();
42:
43: Rodic b = new Potomek();
44: b.nevirtualniMetoda();
45: b.virtualniMetoda();
46:
47: /* Vystup bude:
48: *
49: * Jsem nevirtualni metoda potomka
50: * Jsem prepsana metoda
51: * Jsem nevirtualni metoda rodice
52: *
53: * // neni totiz jasne zda volame metodu rodice nebo potomka,
54: * zavola se proto metoda rodice i presto ze sme vytvareli objekt
55: * potomka
56: *
57: * Jsem prepsana metoda
58: *
59: * // tady uz se zavola metoda potomka, protoze jsme ji spravne prepsali
60: */
61:
62: Console.ReadLine();
63:
64: }
65: }
66: }