Prevladavanje metode u C # - Uvod - Koraci - Korištenje prevladavanja

Sadržaj:

Anonim

Uvod o prevladavanju metoda u C #

Nadjačavanje u jednostavnom smislu znači sposobnost modifikacije ponašanja metoda. Svi znamo za Virtualnu funkciju u C ++, u kojoj se pozivamo iz osnovne baze u izvedenoj klasi. Nadjačavanje metode u C # pruža sličnu privilegiju kao i Virtualna funkcija u C ++. Da uzmemo primjer ptica, sve ptice imat će isti atribut kao i muha, boja itd. Ali različite će ptice imati različit način letenja i boja će se razlikovati od ptice do ptice. Na taj način možemo nadvladati metode baze ptica u izvedenim klasama poput papagaja, vrapca, vrana itd.

Kako koristiti prevladavanje u C #?

Pretpostavimo da naša aplikacija ima zahtjev za promjenom ponašanja metode osnovne klase u izvedenoj klasi, tada bismo trebali ići na prevladavanje metode. Da bismo to postigli, moramo stvoriti metodu u izvedenoj klasi s istim potpisom u osnovnoj klasi da bismo izveli drugačiji zadatak. Prije nego što naučimo kako koristiti važnu tehniku, moramo imati na umu sljedeće točke.

  • U programiranju C #, prevladavanje metoda naziva se i polimorfizam vremena izvođenja, kasno vezivanje ili dinamički polimorfizam.
  • Samo je u izvedenim klasama metoda preglasavanja moguća. Jer je metoda nadjačana u izvedenom razredu iz osnovne klase.
  • Metoda bi trebala biti ne-virtualna ili statička metoda za poništavanje.
  • Modifikator razine pristupa i metode za poništavanje i virtualne metode trebao bi biti isti.

Metoda koja se nadjačava deklaracijom preglasavanja naziva se metoda preglasavanja baze. Ovo će biti prisutno u osnovnoj klasi. Prepisana osnovna metoda može biti apstraktna, nadjačana ili virtualna. Nova izvedba zvana, override metoda naslijeđena je iz ove osnovne klase.

Za presvlačenje metoda koristimo različite ključne riječi. Oni su,

1) Virtualna ključna riječ

Mi prevoditelj naiđe na virtualnu ključnu riječ u programu, on razumije da ovu metodu može nadjačati bilo koja njena izvedena klasa. Struktura je u nastavku.

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

2) Prevladavanje ključne riječi

To je prisutno u izvedenom razredu. Sastavljaču kaže da ova metoda nadjačava metodu s istim imenom i potpisom u osnovnoj klasi.

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

Primjer

Prvo, razmotrimo primjer bez korištenja ključne riječi Virtual i Override.

Kodirati:

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

Izlaz:

U gornjem primjeru stvorili smo objekt Izvedena klasa Parrotand koji pohranjuje svoju referencu u objekt referentne varijable tipa Birds.

U sljedećem koraku, pomoću objekta referentne varijable, pozivamo funkciju Color (). Budući da objekt sadrži referencu na objekt tipa Parrot, prirodno je da očekujemo da se izvrši funkcija Color () klase Parrot. Ali mi griješimo. Ljepota programiranja neće dopustiti da se to dogodi.

Na naše iznenađenje, ono što je izvedeno je metoda Color () klase ptica. To je zato što se funkcija poziva na temelju vrste reference, a ne na ono na što se odnosi referentna varijabla. Budući da je objekt referenca tipa Birds, pozvat će se funkcija Color () klase Birds, bez obzira na koji se objekt odnosi.

Sada ćemo prepisati isti program s virtualnim i nadjačati. Ovaj put ćemo ići korak po korak za boljim razumijevanjem.

Napravite bazu s bilo kojim nazivom. Ovdje koristim Ptice. Napišite metodu s virtualnom ključnom riječi. Ovo će biti naša poništena metoda koju ćemo prevladati u naslijeđenom razredu. Unutar metode napišite neku poruku za ispis u konzoli.

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

Sada stvorite još jednu klasu Parrot. Ovaj put ćemo je naslijediti od osnovne klase koju smo kreirali ranije tj. Ptice. Za nasljeđivanje koristimo simbol ':'.

klasa Papagaj: Ptice

Ovdje napiši funkciju s nadjačavanjem ključne riječi i napiši neku poruku. Provjerite podudaraju li se naziv metode i potpis u izvedenoj klasi s imenom metode i potpisom u osnovnoj klasi.

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

Potrebna nam je još jedna klasa da izvršimo funkcionalnost da provjerimo preskupi. Napravite klasu s bilo kojim nazivom. Unutra piše glavna funkcija.

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

Napravite objekt roditeljske klase i pokrenite funkciju pomoću objekta klase. Time će se pozvati metoda Boja prisutna u klasi Ptice.

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

Sada stvorite objekt izvedene klase i nazovite metodu Color. Pri tome će se pozvati metoda Boja klase Parrot.

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

Možete li pogoditi izlaz kad pokrenemo program? Ovo je prikazano u nastavku.

Izlaz:

Ključne riječi nadjačajne i virtualne omogućavaju pozivanje metoda osnovne baze i izvedenih klasa odvojeno u bilo kojem trenutku, čak i ako su imena metode i potpisi isti.

Zaključak

U ovom smo članku shvatili metodu nadjačavanja, potrebu metode nadjačavanja, primjer u stvarnom svijetu načela poništavanja, način da se postigne, nužnost korištenja virtualnih i poništenih ključnih riječi i primjer poništavanja pomoću koda. Možemo zaključiti da je prevladavanje jedna od korisnih značajki polimorfizma kojom možemo promijeniti ponašanje metode osnovne klase u izvedenom razredu.

Preporučeni članci

Ovo je vodič za preglasavanje metoda u C #. Ovdje smo raspravljali o Uvodu, kako koristiti prevladavajuće i različite ključne riječi za preglasavanje metoda zajedno s primjerima i koracima. Možete pogledati i sljedeće članke da biste saznali više -

  1. C # funkcije
  2. C # naredbe
  3. Što je Multithreading u C #?
  4. C # string funkcije
  5. Vodič za prevladavanje u C ++
  6. Prevladavanje u Javi
  7. Multithreading u C # s metodama