Введение в переопределение в 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. Нам нужен еще один класс для выполнения функциональности, чтобы проверить переопределение. Создать класс с любым именем. Внутри этого написать функцию Main.

class ExecutionClass
(
int Main( )
(
)
)

6. Создайте объект родительского класса и запустите функцию, используя объект класса. Это вызовет метод Message, представленный в классе Animal.

Animal animalObject;
animalObject.Message( );

7. Теперь создайте объект производного класса и вызовите метод Message. Это вызовет метод Message класса Dog.

Dog dogObject;
dogObject.Message( );

8. Каким будет вывод этого кода? Можете ли вы угадать это? Это как показано ниже.

Выход:

9. В приведенном выше примере мы вызываем функцию с тем же именем и подписью, используя объект, созданный для производного и базового класса отдельно. В обоих случаях для базового и производного класса будут вызываться разные версии функции.

Вывод

В этой статье мы поняли метод переопределения в C ++, необходимость переопределения метода, реальные примеры принципа переопределения, способ его достижения и пример переопределения с использованием кода. Мы можем заключить, что переопределение является одной из полезных функций полиморфизма в C ++, в которой мы можем изменить поведение метода базового класса в производном классе.

Рекомендуемые статьи

Это руководство по переопределению в C ++. Здесь мы обсудим, как работает Overriding в C ++, простой пример с различными шагами. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-

  1. Массивы в C ++
  2. Введение в C ++
  3. Команды C ++
  4. Копировать конструктор в C ++
  5. Руководство по переопределению в ООП
  6. Переопределение в Java