Introdução à substituição em C ++

A substituição em C ++ é uma das maneiras de obter o polimorfismo em tempo de execução, no qual modificamos o comportamento do mesmo método. Em geral, a classe filho herda as funções de membro e os membros de dados da classe base. Mas quando nossa necessidade é substituir a funcionalidade na classe filho, precisamos usar a substituição de função. A substituição fornece um privilégio para os métodos terem o mesmo nome na classe base e na classe derivada. Ele nos permite alterar o comportamento da função presente na classe base, em suas classes derivadas, de acordo com a nossa necessidade.

Como a substituição funciona em C ++?

Antes de entender a substituição, vamos entender o polimorfismo primeiro. O significado literal de polimorfismo é muitas formas, ou seja, ter múltiplas formas de uma coisa em particular. Em uma linguagem de programação orientada a objetos, esse é um dos recursos úteis. Na herança, o polimorfismo é alcançado, por substituição de função ou método, quando as classes base e derivada têm a mesma declaração da função de membro, mas sua definição será diferente.

Para fazer isso, precisamos herdar de uma classe na classe derivada primeiro. Então, devemos fornecer definições diferentes, de acordo com a necessidade, para qualquer um dos métodos da classe base novamente dentro da classe derivada. Somente então, é dito que essa função é substituída e esse processo passo a passo é chamado Substituição de Função.

Digamos que, em um cenário em que nosso aplicativo tenha o requisito de alterar o comportamento do método da classe base em uma classe derivada, devemos usar o recurso de substituição . Para substituir uma função na classe derivada, devemos ter a mesma assinatura na classe filho e também os nomes das funções devem ser os mesmos nas bases e nas classes derivadas. Aqui assinatura significa uso do mesmo tipo de dados e sequência de parâmetros a serem passados ​​na função. Se não houver necessidade de parâmetros, não precisamos usar nenhum parâmetro na função base e na função filho. Abaixo, temos alguns pontos que precisamos ter em mente antes de usarmos a substituição.

  • Na programação C ++, a substituição será um exemplo de polimorfismo em tempo de execução ou polimorfismo dinâmico.
  • A substituição é possível apenas nos métodos presentes nas classes derivadas porque um método é substituído na classe derivada da classe base.
  • Para obter a substituição, as funções presentes nas classes base e derivada devem ter o mesmo nome, o mesmo tipo de retorno e os mesmos parâmetros.

O método que é substituído pela declaração de substituição é chamado de método base substituído. A classe base conterá esse método. Uma nova implementação chamada, método de substituição é herdada dessa classe base. Quando criamos um objeto da classe derivada e chamamos a função membro que existe nas classes base e derivada, a função membro da classe base será ignorada e a função membro da classe derivada será invocada.

Abaixo estão os requisitos para Substituição de método:

  • A primeira e mais importante coisa é que a herança deve estar lá da classe base para a classe derivada, porque a substituição da função não pode ser feita dentro da mesma classe. Para conseguir isso, precisamos de uma classe base e uma classe derivada.
  • A função redefinida deve ter exatamente a mesma declaração nas classes base e derivada. O que isso significa? Isso significa que as funções devem ter o mesmo nome, a mesma assinatura e a mesma lista de parâmetros.

Exemplo de substituição

Código

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

No exemplo acima, a função Message () é substituída na classe derivada.

Exemplo com etapas

1. Vamos dar uma olhada no exemplo usando a função main () para entender melhor a substituição.

2. Crie uma classe base com qualquer nome. Aqui estou usando Animal. Escreva um método para exibir alguma mensagem para exibir. Este será o nosso método substituído, que substituiremos na classe herdada. Dentro do método, escreva alguma mensagem para imprimir.

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

3. Agora crie mais uma classe Dog. Desta vez, vamos herdá-lo da classe base que criamos anteriormente, ou seja, Animal. Para herdar, usamos o símbolo ':'.

class Dog: public Animal

4. Aqui declaramos a mesma função Message () para diferentes implementações e escrevemos alguma mensagem. Verifique se o nome e a assinatura do método na classe derivada correspondem ao nome e à assinatura do método na classe base.

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

5. Precisamos de mais uma classe para executar a funcionalidade e verificar a substituição. Crie uma classe com qualquer nome. Dentro disso, escreva a função principal.

class ExecutionClass
(
int Main( )
(
)
)

6. Crie um objeto da classe pai e ative a função usando o objeto da classe. Isso invocará o método Message presente na classe Animal.

Animal animalObject;
animalObject.Message( );

7. Agora crie o objeto da classe derivada e chame o método Message. Isso invocará o método Message da classe Dog.

Dog dogObject;
dogObject.Message( );

8. Qual será a saída desse código? Você consegue adivinhar? Isto é como mostrado abaixo.

Resultado:

9. No exemplo acima, estamos chamando a função com o mesmo nome e assinatura, usando um objeto criado para a classe derivada e base separadamente. Nos dois casos, diferentes versões da função serão chamadas para a classe base e derivada.

Conclusão

Neste artigo, entendemos o método de substituição em C ++, a necessidade de substituição de métodos, exemplos reais do princípio de substituição, a maneira de alcançá-lo e o exemplo de substituição usando o código. Podemos concluir que a substituição é um dos recursos úteis no polimorfismo em C ++, no qual podemos alterar o comportamento do método da classe base na classe derivada.

Artigos recomendados

Este é um guia para substituir em C ++. Aqui discutimos como funciona a substituição em C ++, um exemplo simples com etapas diferentes. Você também pode consultar nossos outros artigos relacionados para saber mais.

  1. Matrizes em C ++
  2. Introdução ao C ++
  3. Comandos C ++
  4. Copiar Construtor em C ++
  5. Guia para substituir em OOPs
  6. Substituindo em Java