Sostituzione del metodo in C # - Introduzione - Passi - Uso dell'override

Sommario:

Anonim

Introduzione alla sostituzione del metodo in C #

Sovrascrivere in termini semplici significa la capacità di modificare il comportamento dei metodi. Conosciamo tutti la funzione virtuale in C ++, in cui invochiamo la funzione dalla classe base nella classe derivata. La sostituzione del metodo in C # fornisce un privilegio simile alla funzione virtuale in C ++. Per fare un esempio degli uccelli, tutti gli uccelli avranno lo stesso attributo di volare, colore, ecc. Ma uccelli diversi avranno un modo diverso di volare e il colore varierà da uccello a uccello. Quindi possiamo ignorare i metodi della classe base Bird in classi derivate come un pappagallo, un passero, un corvo, ecc.

Come usare l'override in C #?

Supponiamo che la nostra applicazione abbia il requisito di modificare il comportamento del metodo della classe di base in una classe derivata, quindi dovremmo optare per l'override del metodo. Per raggiungere questo obiettivo, è necessario creare il metodo nella classe derivata con la stessa firma nella classe base per eseguire un'attività diversa. Prima di imparare come utilizzare la tecnica di sostituzione, è necessario tenere presente i seguenti punti.

  • Nella programmazione C #, il metodo Overriding è anche chiamato polimorfismo di runtime, associazione tardiva o polimorfismo dinamico.
  • È possibile solo l'override del metodo delle classi derivate. Perché un metodo viene sovrascritto nella classe derivata dalla classe base.
  • Il metodo dovrebbe essere un metodo non virtuale o statico per una sostituzione.
  • Il modificatore del livello di accesso sia del metodo override che del metodo virtuale dovrebbe essere lo stesso.

Il metodo che viene sovrascritto dalla dichiarazione di sostituzione viene chiamato metodo di base sostituito. Questo sarà presente nella classe base. Il metodo di base ignorato può essere astratto, override o virtuale. La nuova implementazione chiamata, metodo override è ereditata da questa classe base.

Usiamo parole chiave diverse per l'override del metodo. Loro sono,

1) Parola chiave virtuale

Il compilatore incontra la parola chiave virtuale nel programma, capisce che questo metodo può essere ignorato da una qualsiasi delle sue classi derivate. La struttura è come di seguito.

public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)

2) Sostituisci parola chiave

Questo è presente nella classe derivata. Indica al compilatore che questo metodo ha la precedenza sul metodo con lo stesso nome e la stessa firma nella classe base.

public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)

Esempio

Innanzitutto, esaminiamo l'esempio senza utilizzare la parola chiave Virtual e override.

Codice:

class Birds
(
public void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
class Parrot:Birds
(
public void Color( )
(
Console.WriteLine("Parrot is Green");
)
)
class ExecutionClass
(
public static void Main( )
(
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
)
)

Produzione:

Nell'esempio sopra, abbiamo creato un oggetto di classe Derivata Parrotand memorizzandone il riferimento nell'oggetto variabile di riferimento del tipo Uccelli.

Nel passaggio successivo, usando l'oggetto variabile di riferimento, invochiamo la funzione Color (). Poiché object contiene un riferimento a un oggetto di tipo Parrot, è naturale aspettarsi che venga eseguita la funzione Color () della classe Parrot. Ma abbiamo torto. La bellezza della programmazione non permetterà che ciò accada.

Con nostra sorpresa, ciò che viene eseguito è il metodo Color () della classe Birds. Questo perché la funzione viene invocata in base al tipo di riferimento e non a ciò a cui fa riferimento l'oggetto della variabile di riferimento. Poiché object è un riferimento di tipo Birds, verrà invocata la funzione Color () della classe Birds, indipendentemente dall'oggetto a cui si riferisce.

Ora riscriviamo lo stesso programma con virtual e override Questa volta andremo passo dopo passo per una migliore comprensione.

Crea una classe base con qualsiasi nome. Qui sto usando gli uccelli. Scrivi un metodo con la parola chiave virtuale. Questo sarà il nostro metodo ignorato che sovrascriveremo nella classe ereditata. All'interno del metodo scrivi qualche messaggio da stampare nella console.

class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)

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

classe Pappagallo: Uccelli

Qui scrivi una funzione con la parola chiave override e scrivi qualche 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 override void Color ( )
(
Console.WriteLine("Parrot is Green");
)

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
(
public static void Main( )
(
)
)

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

Birds object;
object = new Birds( );
object .Color( );

Ora crea l'oggetto della classe derivata e chiama il metodo Color. Questo invocherà il metodo Color della classe Parrot.

object = new Parrot( );
object.Color( );

Riesci a indovinare l'output quando eseguiamo il programma? Questo è come mostrato di seguito.

Produzione:

Le parole chiave override e virtual consentono di richiamare la classe base e i metodi della classe derivata separatamente in qualsiasi momento, anche se i nomi e le firme dei metodi sono gli stessi.

Conclusione

In questo articolo abbiamo compreso il metodo override, la necessità del metodo override, l'esempio reale del principio override, il modo per raggiungerlo, la necessità di utilizzare le parole chiave virtuali e override e l'esempio dell'override utilizzando il codice. Possiamo concludere che l'override è una delle caratteristiche utili del polimorfismo che possiamo modificare il comportamento del metodo della classe base nella classe derivata.

Articoli consigliati

Questa è una guida alla sostituzione del metodo in C #. Qui discutiamo l'introduzione, come usare l'override e le diverse parole chiave per l'override del metodo insieme ad esempi e passaggi. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Funzioni C #
  2. Comandi C #
  3. Che cos'è il multithreading in C #?
  4. Funzioni stringa C #
  5. Guida alla sostituzione in C ++
  6. Sostituzione in Java
  7. Multithreading in C # con metodi