Introduzione alla sostituzione in C ++

La sostituzione in C ++ è uno dei modi per ottenere il polimorfismo di runtime, in cui modifichiamo il comportamento dello stesso metodo. In generale, la classe figlio eredita le funzioni membro e i membri dati dalla classe base. Ma quando il nostro bisogno è quello di sovrascrivere la funzionalità nella classe figlio, allora dobbiamo usare la funzione di sostituzione. L'override fornisce un privilegio ai metodi per avere lo stesso nome sia nella classe base che nella sua classe derivata. Ci consente di modificare il comportamento della funzione presente nella classe base, nelle sue classi derivate in base alle nostre esigenze.

Come funziona Override in C ++?

Prima di comprendere l'override, dobbiamo prima capire il polimorfismo. Il significato letterale del polimorfismo è molte forme, cioè avere più forme di una cosa particolare. In un linguaggio di programmazione orientato agli oggetti, questa è una delle funzionalità utili. In eredità, il polimorfismo si ottiene, per funzione o per metodo, quando entrambe le classi base e derivata hanno la stessa dichiarazione di funzione membro ma la loro definizione sarà diversa.

Per fare ciò, dobbiamo prima ereditare da una classe nella classe derivata. Quindi dovremmo fornire definizioni diverse in base alle necessità, per uno qualsiasi dei metodi della classe base all'interno della classe derivata. Solo allora si dice che quella funzione è stata ignorata, e questo processo passo dopo passo si chiama Sostituzione funzione.

Diciamo che prendiamo uno scenario in cui la nostra applicazione ha il requisito di cambiare il comportamento del metodo della classe base in una classe derivata, quindi dovremmo usare la funzione di override . Per sovrascrivere una funzione nella classe derivata, dobbiamo avere la stessa firma nella classe figlio, inoltre i nomi delle funzioni devono essere uguali sia nelle basi che nelle classi derivate. In questo caso la firma indica l'uso dello stesso tipo di dati e la stessa sequenza di parametri da passare nella funzione. Se non sono necessari parametri, non è necessario utilizzare alcun parametro nella funzione base e nella funzione figlio. Di seguito abbiamo alcuni punti che dobbiamo tenere a mente prima di usare l'override.

  • Nella programmazione C ++, l'override sarà un esempio di polimorfismo di runtime o polimorfismo dinamico.
  • La sostituzione è possibile solo nei metodi presenti nelle classi derivate poiché un metodo viene sostituito nella classe derivata dalla classe base.
  • Per ottenere l'override, le funzioni presenti nelle classi base e derivate devono avere lo stesso nome, lo stesso tipo di ritorno e gli stessi parametri.

Il metodo che viene sovrascritto dalla dichiarazione di sostituzione viene chiamato metodo di base sostituito. La classe base conterrà questo metodo. La nuova implementazione chiamata, metodo override è ereditata da questa classe base. Quando creiamo un oggetto della classe derivata e chiamiamo la funzione membro che esiste in entrambe le classi base e derivata, la funzione membro della classe base verrà ignorata e verrà invocata la funzione membro della classe derivata.

Di seguito sono riportati i requisiti per l'override del metodo:

  • La prima e più importante cosa è che l'ereditarietà dovrebbe essere lì dalla classe base a quella derivata perché l'override della funzione non può essere fatto all'interno della stessa classe. Per raggiungere questo obiettivo abbiamo bisogno di una classe base e una classe derivata.
  • La funzione ridefinita dovrebbe avere esattamente la stessa dichiarazione sia nelle classi base che derivate. Cosa significa? Ciò significa che le funzioni dovrebbero avere lo stesso nome, la stessa firma e lo stesso elenco di parametri.

Esempio di sostituzione

Codice

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

Nell'esempio sopra, la funzione Message () viene sovrascritta nella classe derivata.

Esempio con passaggi

1. Diamo un'occhiata all'esempio usando la funzione main () per capire meglio l'override.

2. Creare una classe base con qualsiasi nome. Qui sto usando Animal. Scrivi un metodo per visualizzare alcuni messaggi da visualizzare. Questo sarà il nostro metodo ignorato che sovrascriveremo nella classe ereditata. All'interno del metodo scrivi qualche messaggio da stampare.

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

3. Ora crea un altro cane di classe. Questa volta lo erediteremo dalla classe di base che abbiamo creato in precedenza, ovvero Animal. Per ereditare usiamo il simbolo ':'.

class Dog: public Animal

4. Qui dichiariamo la stessa funzione Message () per un'implementazione diversa e scriviamo un messaggio. Assicurarsi che il nome e la firma del metodo nella classe derivata corrispondano al nome e alla firma del metodo nella classe base.

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

5. Abbiamo bisogno di un'altra classe per eseguire la funzionalità per verificare l'override. Crea una classe con qualsiasi nome. Al suo interno scrivi la funzione principale.

class ExecutionClass
(
int Main( )
(
)
)

6. Creare un oggetto della classe genitore e attivare la funzione utilizzando l'oggetto della classe. Questo invocherà il metodo Message presente nella classe Animal.

Animal animalObject;
animalObject.Message( );

7. Ora crea l'oggetto della classe derivata e chiama il metodo Message. Questo invocherà il metodo Message della classe Dog.

Dog dogObject;
dogObject.Message( );

8. Quale sarà l'output di questo codice? Puoi indovinarlo? Questo è come mostrato di seguito.

Produzione:

9. Nell'esempio sopra, chiamiamo la funzione con lo stesso nome e la stessa firma, usando un oggetto creato separatamente per la classe derivata e base. In entrambi i casi, verranno chiamate versioni diverse della funzione per la classe base e derivata.

Conclusione

In questo articolo, abbiamo compreso il metodo di sostituzione in C ++, la necessità del metodo di sostituzione, esempi reali del principio di sostituzione, il modo per raggiungerlo e l'esempio di sostituzione mediante il codice. Possiamo concludere che l'override è una delle caratteristiche utili del polimorfismo in C ++ in cui possiamo cambiare il comportamento del metodo della classe base nella classe derivata.

Articoli consigliati

Questa è una guida per eseguire l'override in C ++. Qui discutiamo di come funziona Override in C ++, un semplice esempio con diversi passaggi. Puoi anche consultare i nostri altri articoli correlati per saperne di più-

  1. Matrici in C ++
  2. Introduzione al C ++
  3. Comandi C ++
  4. Copia costruttore in C ++
  5. Guida alla sostituzione in OOP
  6. Sostituzione in Java

Categoria: