- Характеристики на наследството
- йерархия
- полиморфизъм
- Видове наследяване
- Уникално наследство
- Наследяване на много нива
- Йерархично наследяване
- Хибридно наследяване
- Множество наследяване
- Видове наследяване от базов клас
- Публично наследство
- Защитено наследство
- Частно наследство
- Примери
- Пример на Python
- Пример в C ++
- Препратки
The в обект наследство - ориентираното програмиране е начин за организиране на обекти в йерархията от общото към конкретното. Това е притурката, използвана за разширяване на клас в друг клас, запазвайки аналогично изпълнение.
В повечето базирани на класове обектно-ориентирани езици, обект, създаден чрез наследяване, наречен детски обект, получава всички свойства и поведение на родителския обект.
Просто доказателство за наследство в ориентация към обекта. Източник: 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 ++ назовава един или повече базови класове и има следната форма: клас производен клас: спецификатор на достъп базов клас, където спецификаторът на достъп е публичен, защитен или частен, а базовият клас е името на предварително определен клас. Ако спецификаторът за достъп не се използва, по подразбиране се приема private.
Суперкласът "Форма" и производният му клас "Правоъгълник" може да се счита, както следва:
Когато горният код се компилира и изпълни, се появява следният изход: "Обща площ: 35".
Препратки
- Дейв Брауншвайг (2020). Наследяване и полиморфизъм. Rebus Общността. Взето от: press.rebus.community.
- Курс на Питон (2020). Наследяването. Взета от: python-course.eu.
- Данъчен ментор (2020). R Наследяване. Взета от: datamentor.io.
- Учебна точка (2020). C ++ наследяване. Взета от: tutorialspoint.com.
- Net-информация (2020). Различни видове наследяване. Взета от: net-informations.com.