Johdanto menetelmän ohittamisesta C #: ssä
Ylivoimainen yksinkertaisella aikavälillä tarkoittaa kykyä muuttaa menetelmien käyttäytymistä. Me kaikki tiedämme C ++: n virtuaalifunktiosta, jossa kutsumme funktiota johdetun luokan kantaluokasta. Menetelmän ohittaminen C #: ssä tarjoaa samanlaisen oikeuden kuin C ++: n virtuaalitoiminto. Esimerkiksi lintuista kaikilla lintuilla on sama ominaisuus kuin kärpäsellä, värillä jne. Mutta eri lintuilla on erilainen lentotapa ja väri vaihtelee lintujen välillä. Joten voimme ohittaa Bird-pohjaluokan menetelmät johdettuissa luokissa, kuten papukaija, varpunen, varis jne.
Kuinka käyttää ohittamista C #: ssä?
Oletetaan, että sovelluksessamme on vaatimus muuttaa perusluokan menetelmän käyttäytymistä johdetussa luokassa, niin meidän pitäisi mennä menetelmän ohittamiselle. Tämän saavuttamiseksi meidän on luotava menetelmä johdettuun luokkaan samalla allekirjoituksella perusluokassa suorittamaan erilainen tehtävä. Ennen kuin opimme käyttämään ohjaavaa tekniikkaa, meidän on pidettävä mielessä seuraavat kohdat.
- C # -ohjelmoinnissa menetelmän ohittamista kutsutaan myös ajoajan polymorfismiksi, myöhäisiksi sitoutumisiksi tai dynaamiseksi polymorfismiksi.
- Vain johdettuissa luokissa menetelmä ohittaminen on mahdollista. Koska menetelmä ohitetaan johdetussa luokassa perusluokasta.
- Menetelmän tulisi olla ei-virtuaalinen tai staattinen menetelmä ohitusta varten.
- Sekä ohitusmenetelmän että virtuaalisen menetelmän käyttöoikeustason muokkaimen tulisi olla samat.
Menetelmää, joka ohitetaan ohitusilmoituksella, kutsutaan ohitetuksi perusmenetelmäksi. Tämä on läsnä perusluokassa. Ohitettu perusmenetelmä voi olla joko abstrakti, ohittava tai virtuaali. Tästä perusluokasta peritään tuore toteutus nimeltään ohitusmenetelmä.
Käytämme erilaisia avainsanoja menetelmien ohittamiseen. He ovat,
1) Virtuaalinen avainsana
Me kääntäjä kohtaa virtuaalisen avainsanan ohjelmassa, ja ymmärtää, että mikä tahansa sen johdettu luokka voi ohittaa tämän menetelmän. Rakenne on kuten alla.
public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)
2) Ohita avainsana
Tämä on läsnä johdetussa luokassa. Se kertoo kääntäjälle, että tämä menetelmä ohittaa menetelmän, jolla on sama nimi ja allekirjoitus perusluokassa.
public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)
esimerkki
Katsotaanpa ensin esimerkkiä käyttämättä Virtuaali- ja ohita-avainsanaa.
Koodi:
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( );
)
)
lähtö:
Yllä olevassa esimerkissä loimme johdetun luokan Parrotand-objektin, joka tallentaa referenssin Birds-tyypin vertailumuuttujaobjektiin.
Seuraavassa vaiheessa, käyttämällä referenssimuuttujaobjektia, kutsutaan toiminto Color (). Koska objekti sisältää viittauksen tyyppiseen Parrot-esineeseen, on luonnollista, että odotamme luokan Parrot-toiminnon Color () suorittavan. Mutta olemme väärässä. Ohjelmoinnin kauneus ei anna sen tapahtua.
Yllätykseemme, mikä toteutetaan, on Väri () -menetelmä Linnut-luokassa. Tämä johtuu siitä, että funktioon kutsutaan viitetyypin perusteella eikä sen perusteella, mihin viitemuuttujaobjekti viittaa. Koska objekti on tyyppi Birds, viitataan luokan Birds funktioon Color () riippumatta siitä, mihin objekti viittaa.
Nyt kirjoitetaan sama ohjelma virtuaalisesti ja ohitetaan. Tällä kertaa siirrytään askel askeleelta ymmärtääksesi paremmin.
Luo minkä tahansa nimen kanssa perusluokka. Täällä käytän lintuja. Kirjoita menetelmä virtuaalisen avainsanan avulla. Tämä on ohitettu menetelmä, jota ohitamme perinnöllisessä luokassa. Kirjoita menetelmän sisälle jokin tulostettava viesti konsoliin.
class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
Luo nyt vielä yksi luokan papukaija. Tällä kertaa me perimme sen aiemmasta luomasta perusluokasta eli lintuista. Periäksesi käytämme ':' -symbolia.
luokan Papukaija: Linnut
Täällä kirjoita funktio ohittavalla avainsanalla ja kirjoita viesti. Varmista, että johdetun luokan menetelmän nimi ja allekirjoitus vastaavat perusluokan menetelmän nimeä ja allekirjoitusta.
public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)
Tarvitsemme vielä yhden luokan toimintojen suorittamiseksi ohittamisen tarkistamiseksi. Luo luokka millä tahansa nimellä. Kirjoita sen sisällä päätoiminto.
class ExecutionClass
(
public static void Main( )
(
)
)
Luo pääluokan objekti ja käynnistä toiminto luokan objektilla. Tämä vetoaa Linnut-luokassa esiintyvään värimenetelmään.
Birds object;
object = new Birds( );
object .Color( );
Luo nyt johdetun luokan objekti ja soita Väri-menetelmälle. Tämä vetoaa Papukaija-luokan värimetodiin.
object = new Parrot( );
object.Color( );
Voitko arvata tulosteen, kun suoritamme ohjelmaa? Tämä on alla olevan kuvan mukainen.
lähtö:
Avainsanat ohittavat ja virtuaalisesti mahdollistavat perusluokan ja johdettujen luokkamenetelmien käyttämisen erikseen milloin tahansa, vaikka menetelmien nimet ja allekirjoitukset olisivat samat.
johtopäätös
Tässä artikkelissa ymmärrettiin menetelmän ohittaminen, menetelmän ohittamisen tarve, reaalimaailman esimerkki pääperiaatteesta, tapa sen saavuttamiseen, virtuaalisten ja korvaavien avainsanojen käytön välttämättömyys ja esimerkki koodin ohittamisesta. Voimme päätellä, että ohittaminen on yksi polymorfismin hyödyllisistä ominaisuuksista, jonka avulla voimme muuttaa perusluokan menetelmän käyttäytymistä johdetussa luokassa.
Suositellut artikkelit
Tämä on opas menetelmästä ohittamiseen C #: ssä. Tässä keskustellaan johdannosta, kuinka käyttää ohitusmenetelmiä ja erilaisia avainsanoja menetelmän ohittamiseen, sekä esimerkkejä ja vaiheita. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -
- C # toiminnot
- C # komennot
- Mikä on monisäikeinen C #: ssä?
- C # merkkijonotoiminnot
- Opas ohittamiseen C ++: ssa
- Ylivoimainen Java
- Monisäikeinen C # menetelmillä