Metoda Suprapunere în C # - Introducere - Pași - Folosirea suprasolicitării

Cuprins:

Anonim

Introducere privind metoda suprasolicitării în C #

Suprasolicitarea în termeni simpli înseamnă capacitatea de a modifica comportamentul metodelor. Cu toții cunoaștem funcția virtuală în C ++, în care invocăm funcția din clasa de bază din clasa derivată. Metoda care trece peste C # oferă un privilegiu similar funcției virtuale în C ++. Pentru a lua un exemplu de păsări, toate păsările vor avea același atribut ca mușca, culoarea etc. Dar păsările diferite vor avea un mod diferit de zbor și culoarea va varia de la pasăre la pasăre. Deci putem înlocui metodele clasei de bază Bird în clase derivate precum papagal, vrabie, cioara etc.

Cum se folosește suprasolicitarea în C #?

Să presupunem că aplicația noastră are cerința de a schimba comportamentul metodei clasei de bază într-o clasă derivată, atunci ar trebui să mergem la o suprasolicitare a metodei. Pentru a realiza acest lucru, trebuie să creăm metoda din clasa derivată cu aceeași semnătură din clasa de bază pentru a îndeplini o sarcină diferită. Înainte de a învăța cum să folosim tehnica superioară, trebuie să ținem cont de punctele de mai jos.

  • În programarea C #, Metoda Suprascriere este de asemenea numită Polimorfism timp de rulare, Legare târzie sau Polimorfism dinamic.
  • Numai în clasele derivate este posibilă suprasolicitarea. Deoarece o metodă este înlocuită în clasa derivată din clasa de bază.
  • Metoda ar trebui să fie o metodă non-virtuală sau statică pentru o înlocuire.
  • Modificatorul de nivel de acces atât al metodei de înlocuire, cât și al metodei virtuale ar trebui să fie același.

Metoda care este anulată prin declarația de anulare se numește metoda bazei suprasolicitate. Acest lucru va fi prezent în clasa de bază. Metoda de bază suprasolicitată poate fi abstractă, înlocuită sau virtuală. Implementarea proaspătă numită, metoda de înlocuire este moștenită de la această clasă de bază.

Utilizăm cuvinte cheie diferite pentru suprasolicitarea metodei. Sunt,

1) Cuvânt cheie virtuală

Compilatorul întâlnește cuvântul cheie virtual din program, înțelege că această metodă poate fi anulată de oricare dintre clasele derivate. Structura este ca mai jos.

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

2) Anulați cuvântul cheie

Acest lucru este prezent în clasa derivată. Acesta îi spune compilatorului că această metodă supraviețuiește metodei cu același nume și semnătura în clasa de bază.

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

Exemplu

Mai întâi, să analizăm exemplul fără a utiliza cuvântul cheie virtual și înlocuire.

Cod:

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( );
)
)

ieşire:

În exemplul de mai sus, am creat un obiect din clasa Derivat Parrotand care își păstrează referința în obiectul variabil de referință de tipul Păsări.

În pasul următor, folosind obiectul variabil de referință, invocăm funcția Color (). Deoarece obiectul conține o referință la un obiect de tip Parrot, este firesc să ne așteptăm ca funcția Color () a clasei Parrot să fie executată. Dar greșim. Frumusețea programării nu-i va permite să se întâmple.

Spre surprinderea noastră, ceea ce este executat este metoda Color () din clasa Birds. Acest lucru se datorează faptului că funcția este invocată în funcție de tipul de referință și nu de ceea ce face referire obiectul variabilei de referință. Întrucât obiectul este o referință de tip Birds, funcția Color () din clasa Birds va fi invocată, indiferent la care se referă obiectul.

Acum să rescriem același program cu virtual și să anulăm de data aceasta, vom merge pas cu pas pentru o mai bună înțelegere.

Creați o clasă de bază cu orice nume. Aici folosesc Păsări. Scrieți o metodă cu cuvântul cheie virtual. Aceasta va fi metoda noastră suprasolicitată pe care o vom trece peste clasa moștenită. În cadrul metodei scrieți un mesaj pentru a imprima în consolă.

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

Acum creați încă un papagal de clasă De data aceasta îl vom moșteni de la clasa de bază pe care am creat-o mai devreme, adică Păsări. Pentru moștenire folosim simbolul „:”.

papagal de clasă: Păsări

Aici scrieți o funcție cu anularea cuvântului cheie și scrieți un mesaj. Asigurați-vă că numele metodei și semnătura din clasa derivată se potrivesc cu numele metodei și semnătura din clasa de bază.

public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)

Avem nevoie de încă o clasă pentru a executa funcționalitatea pentru a verifica suprasolicitarea. Creați o clasă cu orice nume. În interior, scrieți funcția principală.

class ExecutionClass
(
public static void Main( )
(
)
)

Creați un obiect al clasei părinte și declanșați funcția folosind obiectul clasei. Aceasta va invoca metoda Color prezentă în clasa Birds.

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

Acum creați obiectul clasei derivate și apelați la metoda Color. Aceasta va invoca metoda Color din clasa Parrot.

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

Puteți ghici rezultatul când rulăm programul? Acest lucru este după cum se arată mai jos.

ieşire:

Înlocuirea cuvintelor cheie și virtuală pot invoca clasele de bază și metodele clasei derivate separat la orice moment, chiar dacă numele metodei și semnăturile sunt aceleași.

Concluzie

În acest articol am înțeles metoda suprasolicitării, necesitatea suprapunerii metodei, exemplul din lumea reală a principiului suprasolicitării, modalitatea de realizare a acestuia, necesitatea utilizării cuvintelor cheie virtuale și înlocuire și exemplul suprapresionării cu ajutorul codului. Putem concluziona că suprapunerea este una dintre caracteristicile utile în polimorfism, care poate schimba comportamentul metodei clasei de bază din clasa derivată.

Articole recomandate

Acesta este un ghid pentru suprasolicitarea metodei în C #. Aici vom discuta Introducerea, Cum să utilizăm cuvinte cheie suprapuse și diferite pentru suprascrierea metodei împreună cu exemple și pași. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. C # Funcții
  2. C # Comenzi
  3. Ce este Multithreading în C #?
  4. C # Funcții cu șiruri
  5. Ghid de suprasolicitare în C ++
  6. Suprasolicitare în Java
  7. Multitratare în C # cu metode