Приклад для співбесіди

Просто наслідування (без поліморфізму)

У всіх нащадків класу Animal одна і та ж реалізація методу getSound()

class Animal {

     public void getSound() {

          Console.WriteLine("Абстрактний звук");

     }

}

class Dog : Animal {

}

class Cat : Animal {

}

class Cow : Animal {

}

-----------------------------

Animal[] animals = new Animal[3];

Dog dog = new Dog();

Cat cat = new Cat();

Cow cow = new Cow();

animals[0] = dog;

animals[1] = cat;

animals[2] = cow;

foreach (var x in animals) {

     x.getSound();

}

Console.ReadLine();

Абстрактний звук

Абстрактний звук

Абстрактний звук

Наслідування (з поліморфізмом)

Додаємо специфікатори virtual та override і отримуємо різну реалізацію методу getSound() 

у нащадків класу Animal

class Animal {

           // virtual - поліморфний інтерфейс, який можна перевизначити в нащадках

     public virtual void getSound() {   

          Console.WriteLine("Абстрактний звук");

     }

}

class Dog : Animal {

     public override void getSound()

     {

          Console.WriteLine("Woof");

     }

}

class Cat : Animal

{

     public override void getSound()

     {

          Console.WriteLine("Meow");

     }

}

class Cow : Animal

{

     public override void getSound()

     {

          Console.WriteLine("Moo");

     }

}

-----------------------------

Animal[] animals = new Animal[3];

Dog dog = new Dog();

Cat cat = new Cat();

Cow cow = new Cow();

animals[0] = dog;

animals[1] = cat;

animals[2] = cow;

foreach (var x in animals) {

     x.getSound();

}

Console.ReadLine();

Woof

Meow

Moo

Ми звертаємося до кожного звіра узагальнено, не знаючи до якого конкретно звіра з масиву ми звернулися, але завдяки поліморфізму кожен об'єкт поводить себе так, як ми перевизначили його метод. 

Ми перекриваємо стару реалізацію методу - новою.

Приведення до базового типу 

Cow cow = new Cow();

Animal animal = cow;      // Upcasting

      // Ми тепер не знаємо, який конкретний екземляр зберігається в animal, 

     // а нам і не треба знати, у цьому вся сіль (весь смак)

animal.getSound();

Му- му