- Характеристика спадкування
- Ієрархія
- Поліморфізм
- Види спадкування
- Унікальне успадкування
- Багаторівневе успадкування
- Ієрархічне успадкування
- Гібридне успадкування
- Багатократне успадкування
- Види успадкування від базового класу
- Публічна спадщина
- Захищена спадщина
- Приватне успадкування
- Приклади
- Приклад Python
- Приклад в C ++
- Список літератури
Успадкування в об'єктно - орієнтованого програмування є спосіб організації об'єктів в ієрархії від загального до конкретного. Це гаджет, який використовується для розширення класу до іншого класу, зберігаючи аналогічне виконання.
У більшості класових об'єктно-орієнтованих мов об’єкт, створений завдяки успадкуванню, називається дочірнім об'єктом, отримує всі властивості та поведінку батьківського об'єкта.
Простий доказ спадкування в орієнтації на об'єкт. Джерело: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain
Тому саме якість представляє взаємозв'язок між різними класами. Спадкування дозволяє класу мати таку саму поведінку, як інший клас, і розширити або адаптувати цю поведінку, щоб забезпечити спеціальну дію для конкретних потреб.
Спадкування може допомогти представити об'єкти, які мають деякі відмінності та певну схожість у способі їх роботи. Ви можете розмістити всі функціональні можливості, які об'єднані об'єктами, в базовий клас, а потім визначити один або кілька підкласів із власним користувацьким функціоналом.
Характеристика спадкування
Спадкування - одна з ключових характеристик об'єктно-орієнтованого програмування, яка використовується для визначення нового класу з існуючих класів.
Тобто нові класи можна отримати від існуючих базових класів, додавши нові функції. Вам не доведеться писати з нуля. Тому успадкування забезпечує спосіб легкого повторного використання існуючого коду.
Якщо у вас вже є клас, який виконує майже все, що ви хочете, ви можете створити підклас, в якому частина його поведінки частково перекрито, або, можливо, додано якийсь новий функціонал.
Похідний клас успадковує всі методи базового класу, за винятком наступних:
- Конструктори, деструктори та конструктори копій базового класу.
- Оператори перевантажені з базового класу.
- Функції для базового класу.
Ієрархія
Як робить родинне дерево, успадкування слугує для формування ієрархії класів. Важливо зазначити, що атрибути, визначені для базового класу, будуть автоматично присутні у похідному класі. Також методи базового класу працюватимуть для похідних.
Клас, як кажуть, є підкласом класу, від якого він успадковує. З іншого боку, цей клас буде вашим суперкласом. Найбільш загальний клас можна назвати базовим класом, оскільки він знаходиться в основі ієрархії.
Поліморфізм
Спадщина дуже популярна в деяких мовах зі статичними типами, оскільки дозволяє програмісту уникати деяких обмежень статичного типу.
Об'єкт, який успадковує від іншого об'єкта, вважається підтипом цього об’єкта. Прикладом можуть бути об’єкти «інструктор» і «студент», кожен з яких успадковує від «людини».
Якщо викладач і студент одного типу особи, ви можете написати функцію, яка приймає тип людини як параметр і працює на об'єкти інструктора та студента, оскільки обидва є спадкоємцями особи.
Види спадкування
Унікальне успадкування
Коли похідний клас успадковує властивості та поведінку одного базового класу. Тобто один клас поширюється лише на один клас.
Багаторівневе успадкування
Посилається на гаджет, де ви можете успадкувати похідний клас, зробивши цей похідний клас базовим для нового класу. Тобто це призводить до того, коли похідний клас створюється з іншого похідного класу.
Ієрархічне успадкування
У цьому спадкуванні багато підкласів успадковують з одного класу. Тобто це відбувається, коли один базовий клас успадковується більш ніж одним похідним класом.
Гібридне успадкування
Це отримане спадкування, коли будь-яке з трьох попередніх спадків поєднане (одиничне, ієрархічне та багаторівневе).
Багатократне успадкування
Це відповідає цифрі успадкування, коли клас успадковує більше ніж один суперклас. Недолік цього типу успадкування полягає в тому, що похідний клас повинен буде обробляти залежність, яку він має від двох базових класів.
З іншого боку, цей тип успадкування дозволяє програмістам будувати класи, які поєднують аспекти декількох класів та відповідних їм ієрархій.
Види успадкування від базового класу
Публічна спадщина
Коли клас походить від публічного базового класу, громадські члени базового класу стають публічними членами похідного класу, а захищені члени базового класу стають захищеними членами похідного класу.
Приватні члени суперкласу ніколи не будуть доступні безпосередньо з похідного класу, але до них можна отримати доступ за допомогою дзвінків, які здійснюються загальнодоступними та захищеними членами базового класу.
Захищена спадщина
Коли ви створюєте клас, який успадковується від захищеного суперкласу, і громадські, і захищені члени цього надкласу стануть захищеними членами похідного класу.
Приватне успадкування
Коли підклас буде створений з приватного суперкласу, загальнодоступні та захищені члени цього суперкласу стануть приватними членами підкласу.
Приклади
Приклад Python
Щоб показати, як працює принцип успадкування, ми візьмемо роботи або кращий клас роботів мовою програмування Python. Для цього буде вказаний клас під назвою RobotMédico (PhysicianRobot), який походить від суперкласу Robot.
Якщо ви подивитесь на код класу RobotMédico, то зможете побачити, що в цьому класі атрибут чи метод не визначені.
Оскільки клас RobotMedico є підкласом Robot, то в цьому випадку він успадковує як методи __init__, так і say_hi. Успадкування цих методів означає, що їх можна використовувати так, як ніби вони були визначені в класі RobotMédico.
Коли буде створений екземпляр RobotMedico, функція __init__ також створить атрибут імені. Метод say_hi може бути застосований до об'єкта "y" RobotMédico, як це видно в результаті попереднього коду.
Приклад в C ++
Клас може успадковувати більше, ніж один клас, а це означає, що він може успадковувати дані та функції з декількох суперкласів. Для визначення похідного класу ви використовуєте список похідних класів, щоб вказати базові класи.
Список виведення класу в C ++ називає один або більше базових класів і має таку форму: клас похідного класу: специфікатор доступу базовий клас, де специфікатор доступу є загальнодоступним, захищеним або приватним, а базовий клас - назва раніше визначеного класу. Якщо специфікатор доступу не використовується, за замовчуванням приймається приватне.
Надклас "Форма" та його похідний клас "Прямокутник" можна вважати наступним чином:
Коли вищезгаданий код складається і виконується, виникає такий результат: "Загальна площа: 35".
Список літератури
- Дейв Брауншвейг (2020). Спадщина та поліморфізм. Rebus Community. Взято з: press.rebus.community.
- Курс Пітона (2020). Спадщина. Взято з: python-course.eu.
- Вихователь даних (2020). R Спадщина. Взято з: datamentor.io.
- Підручник Точка (2020). С спадщина С ++. Взято з: tutorialspoint.com.
- Мережа-інформація (2020). Різні типи спадкування. Взято з: net-informations.com.