Наследование и полиморфизм или продолжение истории про Васю
Ну что же, продолжим рассматривать основные принципы ООП, следующий на очереди — Наследование.
Возьмем в пример того же самого орка Васю, предположим, что Вася — неебический боец, месит врагов, аки мясорубка под спидами, которая до кучи еще и рэдбулла наебенилась. Но есть одна проблема — Васек наш из лука стрелять не умеет, а если и пытается, то лучше бы просто меч швырял, точнее получится. Что же делать?
На такой случай, мы можем создать «потомка» Васи — орка Петю, который будет столь же неебический боец, но к тому же еще и лучник, немногим недотягивающий до остроухих. То есть, мы просто прописываем новый класс — Петю, который «унаследует» весь интерфейс Васяна, однако он не просто его «унаследует», мы сможем его дополнять и изменять, то есть — сможем прописать новый метод — стрельбу из лука.
Таким образом, наследование дает нам возможность создать новый класс, на основе уже имеющегося, полностью или частично переняв функционал, при этом новый класс называют дочерним или потомком (мб производным), а старый — базовым или родителем.
Окейси, с наследованием вроде разобрались, теперь обратим внимание на полиморфизм.
Полиморфизм дает возможность использовать дочерним классам одинаковые методы, которые будут работать по-разному в зависимости от объекта, если коротко, то «Один интерфейс — множество реализаций»
«Бля, как же сложна», — скажешь ты и будешь прав, поэтому рассмотрим на примере. Пусть у нас есть тот самый Вася, в руке у которого меч, ну и какой-нибудь Гоша, которому совершенно случайно выдали шпагу (да, да, именно ее). Эти парни оба имеют метод РазбитьЕбучку, но крошить лица они будут по-разному, Вася просто замахнется и ебнет, а вот Гошан будет тыкать своей шпагой в противника.
То есть, метод один на двоих, но у одного в руках шпага, а у другого меч, поэтому работает этот метод для каждого орка по-разному.
Спасибо за то, что вы с нами.
С любовью, Рителлинг favorite