Основными фичами этого метода являются классы и объекты. Класс — это общее описание объекта, по факту шаблон, а объект — это уже готовый продукт. Проще говоря, если тебе нужно создать армию орков, то ты сначала прописываешь набор параметров и их дефолтные значения, а потом работаешь с ними с помощью методов, которые сам же и задаешь, например:

Класс Орк{ 
 Private:
 К_воРук = 2;
 ДлинаЧлена = "Tvoi pisun-5sm=0";
 Что_хавает = "Lica yebkov";
 КрутостьОружия = akaVedmakIzMiraOrugiy(12/10);

 Public:
 Рождение();
 Жизнь();
 Пиздиловка();
 Смерть();
}


Окейси, предположим, этого нам хватает, теперь главный вопрос — что, черт возьми, мы сделали?
А сделали мы одного орка (Васю), который будет образцом для всех следующих. То есть теперь мы можем взять и парой команд насоздавать армию таких ребят, с параметрами, которые мы прописали изначально.

Давайте разберемся с некоторыми моментами:
1. Что, блэт, за приват и паблик?
Приват и паблик — это уровни доступа (на самом деле их больше 2-х, но нам пока хватит этих, тк они базовые), они нужны для того, чтобы программа не могла менять определенные переменные без явного на то указания, то есть, предположим ты ебенишь 100500 таких Вась, а потом хочешь у одного поменять число рук на 0, и бам, оно становится 0 у всех, грустнявочка.
Именно во избежание таких случаев сделаны эти уровни доступа и именно через них реализован один из принципов ООП — принцип инкапсуляции, то есть сокрытия важных частей класса от случайного изменения.

2. Не навредит ли такая скрытность работе юзера?
Нет, ведь, когда ты читаешь с экрана телефона этот текст, ты же не шаришь, как работает сам телефон, но это не мешает тебе его юзать).

3. Что за штуки в паблике?
Рождение(), Жизнь() и тд, в общем это интерфейс класса или его функционал, а по отдельности — это методы класса, как раз-таки с помощью этих методов юзер управляет каждым объектом отдельно, именно они могут менять приватные параметры и проводить с ними операции, также в эти методы входят конструктор, с помощью которого можно задать то, каким создается объект (его начальные параметры), и деструктор-удаление объекта из памяти.

С этим разобрались, следующий принцип — Наследование.

Возьмем в пример того же самого орка Васю, предположим, что Вася — неебический боец, месит врагов, аки мясорубка под спидами, которая до кучи еще и рэдбулла наебенилась. Но есть одна проблема — Васек наш из лука стрелять не умеет, а если и пытается, то лучше бы просто меч швырял, точнее получится. Что же делать?

На такой случай, мы можем создать «потомка» Васи — орка Петю, который будет столь же неебический боец, но к тому же еще и лучник, немногим недотягивающий до остроухих. То есть, мы просто прописываем новый класс — Петю, который «унаследует» весь интерфейс Васяна, однако он не просто его «унаследует», мы сможем его дополнять и изменять, то есть — сможем прописать новый метод — стрельбу из лука.

Таким образом, наследование дает нам возможность создать новый класс, на основе уже имеющегося, полностью или частично переняв функционал, при этом новый класс называют дочерним или потомком (мб производным), а старый — базовым или родителем.

Окейси, с наследованием вроде разобрались, теперь обратим внимание на полиморфизм.

Полиморфизм дает возможность использовать дочерним классам одинаковые методы, которые будут работать по-разному в зависимости от объекта, если коротко, то «Один интерфейс — множество реализаций»

Бля, как же сложна
Скажешь ты и будешь прав, поэтому рассмотрим на примере. Пусть у нас есть тот самый Вася, в руке у которого меч, ну и какой-нибудь Гоша, которому совершенно случайно выдали шпагу (да, да, именно ее). Эти парни оба имеют метод РазбитьЕбучку, но крошить лица они будут по-разному, Вася просто замахнется и ебнет, а вот Гошан будет тыкать своей шпагой в противника.
То есть, метод один на двоих, но у одного в руках шпага, а у другого меч, поэтому работает этот метод для каждого орка по-разному.

Спасибо за то, что вы с нами.
С любовью, Рителлинг favorite