ООП, об’єкти, класи. Спадкування і інтерфейси

Доступ до полів з дочірнього класу

Спадкування доступу до властивостей і методів базового класу з класу-спадкоємця стає можливим, якщо всі вони оголошуються з наступними ключовими словами:

1. Public.

Надає необмежений доступ до членів класу: Main, із класів-спадкоємців, з інших аналогів.

2. Protected.

Доступ до члена залишається тільки з початкового класу, або з похідних аналогів.

3. Internal.

Обмеження до члена локалізовано лише даної складанням проекту.

4. Protected internal.

Обмеження до члена лімітовано тільки даної складанням проекту або з похідних класів.

Спадкування доступу до членів класу залежить від ключових слів. Якщо при оголошенні члена як таке не вказано, то доступність встановлюється за замовчуванням (private).

Множинне спадкування

Інтерфейси — це контракт, що надає гарантії, що набір методів буде реалізований в класі-спадкоємці інтерфейсу. Останні не містять статичних членів, полів, констант, або конструкторів. Нелогічно і не можна створювати об’єкти інтерфейсу.

Дані структури створюються за межами класів, оголошуються, використовуючи ключове слово interface:

interface IMyInterfave
{
void MyMethod (int someVar);
}

Правило хорошого тону при створенні інтерфейсів — починати ім’я конструкції з великої літери I, щоб надалі їх легше було розрізняти. У тілі інтерфейсу оголошуються сигнатури його членів.

Для вказівки того, що клас буде реалізовувати інтерфейс, необхідно так само, як і зазвичай при спадкуванні, вказати ім’я конструкції після оголошення класу:

class MyClass : IMyInterface
{
public void MyMethod (int someVar)
}

Інтерфейси необхідні для того, щоб реалізовувати множинне спадкування. В мові програмування С++, ножественное спадкування класів можливо; в мові C# для цих цілей використовуються інтерфейси. Клас може реалізовувати численна кількість інтерфейсів, в такому випадку вони перераховуються через кому після оголошення класу:

class MyClass : IMyFirstInterface, IMySecondInterface
{
//тіло класу
}

За замовчуванням всі властивості і методи інтерфейсів мають доступ public, тому що повинні визначати якийсь функціонал, який надалі буде реалізований в класі. Спадкування в C# майже завжди включає в себе використання цього зручного інструменту.