Успадкування

1. Можливість використовувати дані і методи базового класу

2. Пришвидшує розробку завдяки повторному використанню кода

3. Дозволяє створити архітектуру подібних класів

4. Успадковувати можна лише один клас

5. Відкриває дорогу до поліморфізму

6. Якщо клас успадковує 1000 інших класів, то буде важко щось додавати в базовий клас, 

аби не зробити проблеми в класах, що успадковуються.

Я - базовий клас, батьківський клас, суперклас

Він - похідний клас, дочірній клас, підклас

       class A { }

       class B : A { }

       class C : B { }

Модифікатори доступу:

internal - надати доступ на лише рівні проекту (assembly)

protected internal - надати доступ на рівні збірки і похідним класам в інших проектах

   class Animal

   {

   }

   class Dog : Animal

   {

   }

   class Cat : Animal

   {

   }

   class Cow : Animal

   {

   }

Передача даних в базовий клас

   public B(int odyn, int dva, int try) : base(odyn, dva, try){

   }

Приведення типів 

   Cow cow = new Cow();

   Animal animal = cow;         // upcast

   Cow tmp = (Cow)animal;    // downcast

Перевірка сумісності

   bool isCow = animal is Cow;

   if (isCow) {

        Cow tmp = (Cow)animal;

   }