Основи успадкування в програмуванні

Aug 23, 2024

Лекція про успадкування в програмуванні

Перевизначення методів батьківського класу

  • Перевизначення методів – це можливість реалізувати метод батьківського класу в дочірньому класі з певними змінами.
  • При створенні об'єкта дочірнього класу та виклику методу, спочатку перевіряється наявність методу в дочірньому класі:
    • Якщо метод існує в дочірньому класі, виконується його версія.
    • Якщо в дочірньому класі метод відсутній, виконується метод батьківського класу.
  • Корисно при використанні ланцюгового спадкування.
  • Приклад: реалізація методу print в батьківському класі, але з можливістю перевизначення в дочірньому класі.

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

  • Множинне спадкування – це коли один дочірній клас має кілька батьківських класів.
  • Приклад класів:
    • Animal і Bird – базові класи.
    • Parrot – дочірній клас, що наслідує Animal і Bird.
  • Послідовність виклику конструкторів залежить від порядку спадкування.
  • Дочірній клас має доступ до всіх методів базових класів.

Проблема ромбовидного спадкування

  • Виникає, коли два базові класи наслідують загальний клас, а потім їх наслідує один дочірній клас.
  • Це може призвести до неоднозначності, коли в батьківському класі існує змінна з однаковою назвою.
  • Вирішення:
    • Віртуальне спадкування: Використовується для створення одного екземпляра загального класу.
    • Статичні змінні: Змінна існує в одному екземплярі для всіх об'єктів класу.

Підсумок

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