Prevlada metoda v C # - Uvod - Koraki - Uporaba preglasitve

Kazalo:

Anonim

Uvod o preglasitvi metode v C #

Prevladovanje v preprostem izrazu pomeni zmožnost spreminjanja vedenja metod. Vsi vemo za funkcijo Virtual v C ++, v kateri prikličemo funkcijo iz osnovnega razreda v izpeljanem razredu. Prevladovanje metode v C # ponuja podoben privilegij kot navidezna funkcija v C ++. Če vzamemo primer ptic, bodo vse ptice imele enak atribut kot muha, barva itd. Toda različne ptice bodo imele drugačen način letenja in barva se bo od ptice do ptice razlikovala. Tako lahko preglasimo metode osnovnega razreda Bird v izvedenih razredih, kot so papiga, vrabček, vrana itd.

Kako uporabiti preglasitev v C #?

Recimo, da ima naša aplikacija zahtevo, da spremeni vedenje metode osnovnega razreda v izpeljanem razredu, potem bi morali iti za preglasitev metode. Da bi to dosegli, moramo v izpeljanem razredu ustvariti metodo z enakim podpisom v osnovnem razredu, da bomo lahko opravili drugačno nalogo. Preden se naučimo uporabljati prevladujočo tehniko, moramo upoštevati spodnje točke.

  • V programiranju na C # se metoda Overriding imenuje tudi Run time polimorfizem, Late vezava ali Dynamic Polymorphism.
  • Možno je samo prenašanje metode v izvedenih razredih. Ker je metoda izpisana v izpeljanem razredu iz osnovnega razreda.
  • Metoda mora biti ne-virtualna ali statična metoda za preglas.
  • Modifikator ravni dostopa tako metode preglasitve kot virtualne metode mora biti enak.

Metoda, ki jo razveljavi deklaracija prepisa, imenujemo metoda overridden base. Ta bo prisoten v osnovnem razredu. Metoda prepisane osnove je lahko abstraktna, preglasna ali navidezna. Iz tega osnovnega razreda je podedovana nova izvedba, imenovana metoda preglasitve.

Za preglasitev metode uporabljamo različne ključne besede. So,

1) Navidezna ključna beseda

Ko prevajalnik naleti na navidezno ključno besedo v programu, razume, da lahko to metodo preglasi kateri koli od izvedenih razredov. Struktura je spodaj.

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

2) Preglasi ključno besedo

Ta je prisotna v izpeljanem razredu. Prevajalniku pove, da ta metoda preglasi metodo z istim imenom in podpisom v osnovnem razredu.

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

Primer

Najprej si oglejmo primer, ne da bi uporabili ključno besedo Virtual and override.

Koda:

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

Izhod:

V zgornjem primeru smo ustvarili objekt izpeljanega razreda Parrotand, ki je svojo referenco shranil v referenčni objekt spremenljivke tipa Ptice.

V naslednjem koraku s pomočjo referenčne spremenljivke prikličemo funkcijo Color (). Ker objekt vsebuje sklicevanje na objekt tipa Parrot, je naravno, da pričakujemo, da se bo funkcija Color () razreda Parrot začela izvajati. Vendar se motimo. Lepota programa ne bo dovolila, da se to zgodi.

Na naše presenečenje je izvedljiva metoda Color () razreda Birds. To je zato, ker se funkcija prikliče na podlagi vrste sklicevanja in ne na tisto, na kar se nanaša referenčni spremenljivki. Ker je objekt referenca tipa Birds, se bo sprožila funkcija Color () razreda Birds, ne glede na to, na koga se nanaša objekt.

Zdaj pa naj ponovno napišemo isti program z virtualnim in preglasnim. Tokrat bomo šli korak za korakom za boljše razumevanje.

Ustvarite osnovni razred s katerim koli imenom. Tukaj uporabljam Ptice. Napišite metodo z navidezno ključno besedo. To bo naša razveljavljena metoda, ki jo bomo preglasili v dednem razredu. Znotraj metode napišite nekaj sporočil, ki jih želite natisniti v konzolo.

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

Zdaj ustvarite še en razred Parrot. Tokrat ga bomo podedovali od osnovnega razreda, ki smo ga ustvarili prej, tj. Ptice. Za dedovanje uporabimo simbol ':'.

razred Parrot: Ptice

Tu napišite funkcijo s preglasno ključno besedo in napišite neko sporočilo. Prepričajte se, da se ime metode in podpis v izpeljanem razredu ujemata z imenom metode in podpisom v osnovnem razredu.

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

Za preverjanje prevladujočega stanja potrebujemo še en razred. Ustvari razred s katerim koli imenom. V notranjosti pišejo glavno funkcijo.

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

Ustvarite objekt nadrejenega razreda in sprožite funkcijo s pomočjo predmeta razreda. To bo priklicalo metodo Color, ki je prisotna v razredu Ptice.

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

Zdaj ustvarite predmet izpeljanega razreda in pokličite metodo Color. To bo priklicalo metodo Color v razredu Parrot.

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

Ali lahko uganite izhod, ko zaženemo program? To je prikazano spodaj.

Izhod:

Ključne besede preglasijo in virtualne omogočajo, da se kadar koli ločeno prikličejo metode osnovnega razreda in izvedenih razredov, tudi če so imena in podpisi metod enaki.

Zaključek

V tem članku smo razumeli način preglasitve, potrebo po preglasitvi metode, primer dejanskega načela prevladovanja, način, kako to doseči, potrebo po uporabi navideznih in preglasnih ključnih besed in primer preglasitve z uporabo kode. Zaključimo lahko, da je prevladovanje ena izmed uporabnih lastnosti polimorfizma, s katerim lahko spremenimo vedenje metode osnovnega razreda v izpeljanem razredu.

Priporočeni članki

To je vodnik za prevladovanje metode v C #. Tukaj razpravljamo o uvodu, kako uporabiti prevladujoče in različne ključne besede za preglasitev metode skupaj s primeri in koraki. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. C # funkcije
  2. C # ukazi
  3. Kaj je Multithreading v C #?
  4. Funkcije niza C #
  5. Vodnik za preglasitev v C ++
  6. Prevladovanje v Javi
  7. Multithreading v C # z metodami