Introducción a la anulación en C ++

La anulación en C ++ es una de las formas de lograr el polimorfismo en tiempo de ejecución, en el que modificamos el comportamiento del mismo método. En general, la clase secundaria hereda las funciones miembro y los miembros de datos de la clase base. Pero cuando nuestra necesidad es anular la funcionalidad en la clase secundaria, entonces necesitamos usar la anulación de funciones. La anulación proporciona un privilegio a los métodos para tener el mismo nombre tanto en la clase base como en su clase derivada. Nos permite cambiar el comportamiento de la función presente en la clase base, en sus clases derivadas de acuerdo con nuestra necesidad.

¿Cómo funciona la anulación en C ++?

Antes de entender la anulación, comprendamos primero el polimorfismo. El significado literal del polimorfismo es muchas formas, es decir, tener múltiples formas de una cosa en particular. En un lenguaje de programación orientado a objetos, esta es una de las características útiles. En la herencia, el polimorfismo se logra, por anulación de función o método, cuando las clases base y derivadas tienen la misma declaración de función miembro pero su definición será diferente.

Para hacer esto, primero debemos heredar de una clase a la clase derivada. Luego, debemos proporcionar diferentes definiciones de acuerdo con la necesidad, para cualquiera de los métodos de la clase base nuevamente dentro de la clase derivada. Solo entonces, se dice que esa función se anula, y este proceso paso a paso se llama Anulación de función.

Digamos que tomemos un escenario en el que nuestra aplicación tiene el requisito de cambiar el comportamiento del método de la clase base en una clase derivada, entonces deberíamos usar la función de anulación . Para anular una función en la clase derivada, debemos tener la misma firma en la clase secundaria, también los nombres de las funciones deben ser los mismos en las bases y las clases derivadas. Aquí la firma significa el uso del mismo tipo de datos y secuencia de parámetros que se pasarán en la función. Si no hay necesidad de parámetros, entonces no necesitamos usar ningún parámetro en la función base ni en la función secundaria. A continuación tenemos algunos puntos que debemos tener en cuenta antes de usar la anulación.

  • En la programación en C ++, la anulación será un ejemplo de polimorfismo en tiempo de ejecución o polimorfismo dinámico.
  • La anulación solo es posible en los métodos presentes en las clases derivadas porque un método se anula en la clase derivada de la clase base.
  • Para lograr la anulación, las funciones presentes en las clases base y derivadas deben tener el mismo nombre, el mismo tipo de retorno y los mismos parámetros.

El método que se anula mediante la declaración de anulación se denomina método base anulado. La clase base contendrá este método. Implementación nueva llamada, el método de anulación se hereda de esta clase base. Cuando creamos un objeto de la clase derivada y llamamos a la función miembro que existe tanto en la clase base como en la derivada, la función miembro de la clase base se ignorará y se invocará la función miembro de la clase derivada.

A continuación se detallan los requisitos para la anulación de métodos:

  • Lo primero y más importante es que la herencia debe estar allí desde la base a la clase derivada porque la anulación de funciones no se puede hacer dentro de la misma clase. Para lograr esto necesitamos una clase base y una clase derivada.
  • La función redefinida debe tener exactamente la misma declaración en las clases base y derivada. Qué significa eso? Esto significa que las funciones deben tener el mismo nombre, la misma firma y la misma lista de parámetros.

Ejemplo de anulación

Código

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

En el ejemplo anterior, la función Message () se reemplaza en la clase derivada.

Ejemplo con pasos

1. Veamos el ejemplo usando la función main () para entender mejor la anulación.

2. Cree una clase base con cualquier nombre. Aquí estoy usando Animal. Escriba un método para mostrar algún mensaje para mostrar. Este será nuestro método anulado que anularemos en la clase heredada. Dentro del método escriba algún mensaje para imprimir.

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

3. Ahora crea una clase más de perro. Esta vez lo heredaremos de la clase base que creamos anteriormente, es decir, Animal. Para heredar usamos el símbolo ':'.

class Dog: public Animal

4. Aquí declaramos la misma función Message () para una implementación diferente y escribimos algún mensaje. Asegúrese de que el nombre y la firma del método en la clase derivada coincidan con el nombre y la firma del método en la clase base.

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

5. Necesitamos una clase más para ejecutar la funcionalidad para verificar la anulación. Crea una clase con cualquier nombre. Dentro de eso escribe la función Main.

class ExecutionClass
(
int Main( )
(
)
)

6. Cree un objeto de la clase principal y active la función utilizando el objeto de la clase. Esto invocará el método de Mensaje presente en la clase Animal.

Animal animalObject;
animalObject.Message( );

7. Ahora cree el objeto de la clase derivada y llame al método Mensaje. Esto invocará el método de mensaje de la clase Dog.

Dog dogObject;
dogObject.Message( );

8. ¿Cuál será el resultado de este código? ¿Puedes adivinarlo? Esto es como se muestra a continuación.

Salida:

9. En el ejemplo anterior, estamos llamando a la función con el mismo nombre y firma, usando un objeto creado para la clase derivada y la base por separado. En ambos casos, se llamarán diferentes versiones de la función para la clase base y derivada.

Conclusión

En este artículo, entendemos la anulación del método en C ++, la necesidad de la anulación del método, ejemplos reales del principio de anulación, la forma de lograrlo y el ejemplo de anulación utilizando el código. Podemos concluir que la anulación es una de las características útiles en el polimorfismo en C ++ en la que podemos cambiar el comportamiento del método de la clase base en la clase derivada.

Artículos recomendados

Esta es una guía para sobrescribir en C ++. Aquí discutimos cómo funciona Overriding en C ++, un ejemplo simple con diferentes pasos. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. Matrices en C ++
  2. Introducción a C ++
  3. Comandos C ++
  4. Copiar constructor en C ++
  5. Guía para anular en POO
  6. Anulación en Java