- Характеристики наследования
- иерархия
- Полиморфизм
- Виды наследования
- Уникальное наследование
- Многоуровневое наследование
- Иерархическое наследование
- Гибридное наследование
- Множественное наследование
- Типы наследования от базового класса
- Публичное наследование
- Защищенное наследование
- Частное наследство
- Примеры
- Пример Python
- Пример на C ++
- Ссылки
Наследования в объектно - ориентированного программирования является способ организации объектов в иерархии от общего к частному. Это устройство, используемое для расширения класса в другой класс с сохранением аналогичного исполнения.
В большинстве объектно-ориентированных языков на основе классов объект, созданный посредством наследования, называемый дочерним объектом, получает все свойства и поведение родительского объекта.
Простое доказательство наследования в объектной ориентации. Источник: Pluke / CC0 Creative Commons CC0 1.0 Универсальное общественное достояние
Следовательно, это качество, которое представляет отношения между разными классами. Наследование позволяет классу иметь то же поведение, что и другой класс, а также расширять или адаптировать это поведение, чтобы обеспечить специальное действие для конкретных нужд.
Наследование может помочь представить объекты, которые имеют некоторые различия и некоторые сходства в способах работы. Вы можете поместить все функциональные возможности, общие для объектов, в базовый класс, а затем определить один или несколько подклассов со своими собственными настраиваемыми функциями.
Характеристики наследования
Наследование - одна из ключевых характеристик объектно-ориентированного программирования, используемая для определения нового класса из существующих классов.
То есть новые классы могут быть производными от существующих базовых классов, добавляя новые функции. Вам не нужно писать с нуля. Следовательно, наследование дает возможность легко повторно использовать существующий код.
Если у вас уже есть класс, который делает почти все, что вы хотите, вы можете создать подкласс, в котором часть его поведения частично переопределена, или, возможно, добавлены некоторые новые функции.
Производный класс наследует все методы базового класса, за исключением следующих:
- Конструкторы, деструкторы и конструкторы копирования базового класса.
- Операторы перегружены из базового класса.
- Дружественные к базовому классу функции.
иерархия
Как и семейное древо, наследование служит для формирования иерархии классов. Важно отметить, что атрибуты, определенные для базового класса, будут автоматически присутствовать в производном классе. Кроме того, методы базового класса будут работать для производных.
Класс называется подклассом того класса, от которого он наследуется. С другой стороны, этот класс будет вашим суперклассом. Самый общий класс можно назвать базовым, поскольку он находится в основе иерархии.
Полиморфизм
Наследование очень популярно в некоторых языках со статическими типами, поскольку позволяет программисту избежать некоторых ограничений статического типа.
Объект, который наследуется от другого объекта, считается подтипом этого объекта. Примером могут быть объекты «преподаватель» и «студент», каждый из которых наследуется от «человека».
Если преподаватель и ученик относятся к одному и тому же типу человека, вы можете написать функцию, которая принимает тип человека в качестве параметра и которая работает с объектами преподавателя и ученика, поскольку оба являются наследниками человека.
Виды наследования
Уникальное наследование
Когда производный класс наследует свойства и поведение одного базового класса. То есть один класс распространяется только на один другой класс.
Многоуровневое наследование
Относится к гаджету, от которого можно наследовать от производного класса, что делает этот производный класс базовым классом для нового класса. То есть он возникает, когда производный класс создается из другого производного класса.
Иерархическое наследование
В этом наследовании многие подклассы наследуются от одного класса. То есть это происходит, когда один базовый класс наследуется более чем одним производным классом.
Гибридное наследование
Это результирующее наследование при объединении любого из трех предыдущих наследований (одиночного, иерархического и многоуровневого).
Множественное наследование
Это соответствует показателю наследования, когда класс наследуется от более чем одного суперкласса. Недостатком этого типа наследования является то, что производный класс должен будет обрабатывать зависимость, которую он имеет, от двух базовых классов.
С другой стороны, этот тип наследования позволяет программистам создавать классы, которые объединяют аспекты нескольких классов и их соответствующие иерархии.
Типы наследования от базового класса
Публичное наследование
Когда класс является производным от общедоступного базового класса, открытые члены базового класса становятся общедоступными членами производного класса, а защищенные члены базового класса становятся защищенными членами производного класса.
Частные члены суперкласса никогда не будут доступны напрямую из производного класса, но могут быть доступны с помощью вызовов, сделанных общедоступным и защищенным членам базового класса.
Защищенное наследование
Когда создается класс, наследующий от защищенного суперкласса, как открытые, так и защищенные члены этого суперкласса станут защищенными членами производного класса.
Частное наследство
Когда подкласс создается из частного суперкласса, открытые и защищенные члены этого суперкласса станут частными членами подкласса.
Примеры
Пример Python
Чтобы показать, как работает принцип наследования, мы возьмем роботов или лучший класс роботов на языке программирования Python. Для этого будет указан класс RobotMédico (PhysicianRobot), производный от суперкласса Robot.
Если вы посмотрите на код класса RobotMédico, вы увидите, что в этом классе не определен ни один атрибут или метод.
Поскольку класс RobotMedico является подклассом Robot, в этом случае он наследует методы __init__ и say_hi. Наследование этих методов означает, что их можно использовать так, как если бы они были определены в классе RobotMédico.
Когда создается экземпляр RobotMedico, функция __init__ также создает атрибут имени. Метод say_hi может применяться к объекту «y» RobotMédico, как видно из результата предыдущего кода.
Пример на C ++
Класс может наследовать более чем от одного класса, что означает, что он может наследовать данные и функции от нескольких суперклассов. Чтобы определить производный класс, вы используете список производных классов, чтобы указать базовые классы.
Список производных классов в C ++ называет один или несколько базовых классов и имеет следующую форму: производный класс класса: базовый класс спецификатора доступа, где спецификатор доступа - открытый, защищенный или частный, а базовый класс - имя ранее определенного класса. Если спецификатор доступа не используется, по умолчанию используется частный.
Суперкласс «Shape» и его производный класс «Rectangle» можно рассматривать следующим образом:
Когда приведенный выше код компилируется и выполняется, появляется следующий вывод: «Общая площадь: 35».
Ссылки
- Дэйв Брауншвейг (2020). Наследование и полиморфизм. Ребус Сообщество. Взято с сайта: press.rebus.community.
- Курс Python (2020). Наследование. Взято с: python-course.eu.
- Data Mentor (2020). R Наследование. Взято с: datamentor.io.
- Учебные пособия (2020 г.). C ++ Наследование. Взято с: tutorialspoint.com.
- Интернет-информация (2020). Различные виды наследования. Взято с: net-informations.com.