Вступ до перекриття в C ++

Переоцінка C ++ - це один із способів досягти поліморфізму часу виконання, коли ми модифікуємо поведінку того ж методу. Загалом, дочірній клас успадковує функції-учасники та дані членів від базового класу. Але коли наша потреба полягає в тому, щоб перекрити функціональність у дочірньому класі, тоді нам потрібно використовувати переосмислення функції. Переопределення надає привілей методам мати однакове ім’я як у базовому класі, так і у похідному класі. Це дозволяє нам змінювати поведінку функції, присутнє в базовому класі, у похідних класах відповідно до наших потреб.

Як переосмислення працює в C ++?

Перш ніж зрозуміти головне, давайте розберемося спочатку в поліморфізмі. Буквальне значення поліморфізму - це багато форм, тобто наявність декількох форм однієї конкретної речі. У об’єктно-орієнтованій мові програмування це одна з корисних функцій. При успадкуванні поліморфізм досягається за допомогою функції або методу, що переосмислює, коли і базові, і похідні класи мають однакове оголошення функції члена, але їх визначення буде різним.

Для цього нам потрібно успадкувати спочатку від класу до похідного класу. Тоді ми повинні надати різні визначення залежно від потреби для будь-якого з методів базового класу знову всередині похідного класу. Тільки тоді цю функцію кажуть, що вона буде переосмислена, і цей покроковий процес називається переопределенням функції.

Скажімо, прийняти сценарій, коли наш додаток вимагає змінити поведінку методу базового класу у похідному класі, тоді ми повинні використовувати функцію переопределення . Для того, щоб замінити функцію у похідному класі, ми повинні мати однакову підпис у дочірньому класі, також імена функцій повинні бути однаковими в обох базах і похідних класах. Тут підпис означає використання одного і того ж типу даних та послідовності параметрів, що передаються у функції. Якщо немає необхідності в параметрах, то нам не потрібно використовувати жоден параметр у базовій функції, а також дочірню функцію. Нижче ми маємо деякі моменти, про які ми маємо пам’ятати, перш ніж використовувати головне.

  • У програмуванні на C ++ переосмислення буде прикладом поліморфізму часу виконання або Динамічного поліморфізму.
  • Переопределення можливе лише у методах, присутніх у похідних класах, оскільки метод переосмислений у похідному класі від базового класу.
  • Щоб домогтися переопределення, функції, присутні в базових та похідних класах, повинні мати однакове ім'я, той же тип повернення та однакові параметри.

Метод, який переосмислюється декларацією про переосмислення, називається методом переопределення бази. Базовий клас міститиме цей метод. З цього базового класу успадковується нова реалізована назва, метод переосмислення. Коли ми створюємо об'єкт похідного класу і називаємо функцію-член, яка існує як в базовому, так і в похідному класах, функція-член базового класу буде ігноруватися, а функція-член похідного класу буде викликана.

Нижче наведено вимоги до переосмислення методу:

  • Перше і найважливіше - наслідування повинно бути там від базового до похідного класу, оскільки переосмислення функції не може бути виконано в межах одного класу. Для цього нам потрібен базовий клас та похідний клас.
  • Повторно визначена функція повинна мати точно однакове оголошення в базових і похідних класах. Що це означає? Це означає, що функції повинні мати одне ім’я, ту саму підпис і той самий список параметрів.

Приклад переосмислення

Код

class Animal
(
public:
void Message ( )
(
cout << "Hello there!! I am Animal";
)
);
class Dog: public Animal
(
public:
void Message ( )
(
cout << "I am Dog!!";
)
)

У наведеному вище прикладі функція Message () переосмислюється у похідному класі.

Приклад із кроками

1. Давайте розглянемо приклад, використовуючи функцію main (), щоб краще зрозуміти переосмислення.

2. Створіть базовий клас з будь-яким ім’ям. Тут я використовую Animal. Написати спосіб відображення якогось повідомлення для відображення. Це буде наш перекритий метод, який ми перекриємо у спадковому класі. Всередині методу напишіть якесь повідомлення для друку.

class Animal
(
public void Message( )
(
cout << "Hello there!! I am Animal";
)
)

3. Тепер створіть ще одного класу Dog. Цього разу ми успадкуємо його від базового класу, який ми створили раніше, тобто Animal. Для успадкування ми використовуємо символ ':'.

class Dog: public Animal

4. Тут ми оголошуємо ту саму функцію Message () для різної реалізації та пишемо якесь повідомлення. Переконайтесь, що ім'я методу та підпис у похідному класі відповідають імені методу та підпису в базовому класі.

public void Message ( )
(
cout << "Hey!! I am Dog";
)

5. Нам потрібен ще один клас для виконання функціональності для перевірки переосмислення. Створіть клас із будь-яким ім’ям. Всередині цього записати головну функцію.

class ExecutionClass
(
int Main( )
(
)
)

6. Створіть об’єкт батьківського класу та запустіть функцію, використовуючи об’єкт класу. Це дозволить викликати метод повідомлення, присутній у класі Animal.

Animal animalObject;
animalObject.Message( );

7. Тепер створіть об’єкт похідного класу та викличте метод повідомлення. Це викликає метод Повідомлення класу Собака.

Dog dogObject;
dogObject.Message( );

8. Яким буде вихід цього коду? Ви можете це здогадатися? Це як показано нижче.

Вихід:

9. У наведеному вище прикладі ми викликаємо функцію з тим самим іменем та підписом, використовуючи об'єкт, створений для похідного та базового класу окремо. В обох випадках для базового та похідного класу буде викликано різні версії функції.

Висновок

У цій статті ми зрозуміли метод переосмислення в C ++, необхідність методу переосмислення, приклади реального світу принципу переосмислення, спосіб його досягнення та приклад переопределення за допомогою коду. Можна зробити висновок, що переосмислення є однією з корисних особливостей поліморфізму в C ++, в якій ми можемо змінити поведінку методу базового класу у похідному класі.

Рекомендовані статті

Це посібник з переосмислення в C ++. Тут ми обговорюємо, як працює Overriding в C ++, простий приклад з різними кроками. Ви також можете ознайомитись з іншими пов'язаними з нами статтями, щоб дізнатися більше -

  1. Масиви в C ++
  2. Вступ до C ++
  3. Команди C ++
  4. Копіювання конструктора в C ++
  5. Посібник з перекриття в OOPs
  6. Перевагу в Java