1 of 8

ООП

Абстрактні класи. Інтерфейси

2 of 8

Абстрактні класи

  • Абстрактні класи – це базові класи, за якими не можна створювати об'єкти.
  • Абстрактні класи як правило містять абстрактні (віртуальні) методи, які реалізуються в класах-нащадках.

3 of 8

Створення абстрактного класу

4 of 8

Особливості абстрактного класу

  • Не передбачає створення екземплярів, тому він і є абстрактним;
  • Містить абстрактні члени, що наслідуються класами-нащадками;
  • Абстрактні методи не містять реалізації, а лише декларуються;
  • Всі абстрактні методи повинні бути визначені в класі-нащадку;
  • Область видимості членів, що наслідуються від абстрактних, повинна співпадати, або бути менш строгою;
  • Кількість обов'язкових аргументів повинна бути однаковою;
  • Допускається наявність необов'язкових параметрів в методі класу-нащадку, якщо їх немає в абстрактному класі;

5 of 8

Поліморфізм

  • Поліморфізм – це застосування одного і того ж коду для об'єктів різних класів. Приклад: Farm.php
  • При написанні коду для об'єкта перевіряємо, чи є даний об'єкт нащадком деякого класу
  • Викликаючи метод, PHP сам визначає до якого класу належить об'єкт та викликає метод даного класу

6 of 8

Інтерфейси

  • Інтерфейси – типи, що дозволяють описувати код з оголошенням певного набору методів, які потім повинен реалізовувати клас
  • Інтерфейси подібні до абстрактних класів

7 of 8

Інтерфейси

8 of 8

Інтерфейси vs. абстрактні класи

Інтерфейси

  • Містять лише методи і константи;
  • Не містять реалізації методів, а лише оголошення;
  • Методи повинні бути доступними;
  • Клас може реалізовувати декілька інтерфейсів (множинність наслідування);

Абстрактні класи

  • Можуть містити методи, властивості і константи;
  • Можуть містити неабстрактні методи з реалізацією;
  • Членам можна задавати різну область видимості;
  • Клас-нащадок може унаслідувати лише один абстрактний клас