Все мы знаем, что половина гена исходит от матери, а другая половина — от отца, это основная идея наследственности. То же самое должно быть и в программировании, верно?
Что такое наследование?
Наследование означает, что подкласс (или дочерний класс) наследует атрибуты и методы другого класса (часто называют этот класс суперклассом или родительским классом). Обратите внимание, что дочерний класс is a
относится к родительскому классу, например Dog is a
Animal, Human is a
Animal. Но почему мы утруждаем себя использованием наследования в программировании? Почему бы просто не сделать такие классы, как Dog, Human, Animal, тремя отдельными и не связанными между собой классами? Давайте обсудим в следующем.
Почему наследство?
- Организуйте объект в иерархии: наследование было
is a
отношением, подклассомis a
своего рода суперклассом. Это означает, что подкласс является более конкретной формой суперкласса. - Передать общие атрибуты и методы в подкласс: Подкласс может наследовать атрибуты и методы из суперкласса (в зависимости от спецификатора доступа в суперклассе, см. дополнительные сведения о C++ и Java). метод снова и снова.
- Сделать тип объекта более универсальным: Представьте, что вы хотите написать метод, который будет принимать любое животное в качестве параметра. Однако без наследования нам может понадобиться перегрузить функцию несколькими типами данных Animal, не говоря уже о растущем числе подклассов Animal на более позднем этапе. С помощью наследования мы могли бы просто использовать Animal в качестве типа ввода, а другой более конкретный класс Animal (например, Dog, Cat, Human и т. д.) наследовал бы от него, и все готово!
Когда наследство?
- Хотите передать общий тип в параметр функции: как обсуждалось выше! Кроме того, есть и другие способы обработки такого рода универсального программирования, например, с помощью шаблонов, абстракций и т. д.
- Более организованный: Другим легче понять структуру программы!
Чего следует избегать при наследовании?
Выброс: например, у суперкласса Птица может быть подкласс, такой как Орел, Сова и даже Цыпленок! Однако что, если я скажу, что у суперкласса Bird есть метод Fly. Но подождите... Цыпленок в наше время не умеет летать... Не имеет смысла включать его в класс Птиц. Что мы могли бы сделать с помощью Java, так это то, что летающее животное будет реализовывать интерфейс Flyable (подробности см. здесь). Метод Fly находится внутри интерфейса Flyable, поэтому Animal реализует Flyable и может летать!
Пример кода C++
Код: https://gist.github.com/billy1624/a5b789a823bf7f40d37878a1cc78a02b
Пример вывода:
Пример кода Java
Код: https://gist.github.com/billy1624/436a1f5893946c9c39458e5b20cae590
Пример вывода:
Скоро будет больше постов~ Следите за новостями и следите за обновлениями. Увидимся в следующем посте! Удачного кодирования!! Не стесняйтесь задавать мне любые вопросы ниже, комментарии, исправления и предложения приветствуются!
Билли :)
27.06.2019
— —
GitHub: https://github.com/billy1624