Все мы знаем, что половина гена исходит от матери, а другая половина — от отца, это основная идея наследственности. То же самое должно быть и в программировании, верно?

Что такое наследование?

Наследование означает, что подкласс (или дочерний класс) наследует атрибуты и методы другого класса (часто называют этот класс суперклассом или родительским классом). Обратите внимание, что дочерний класс 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