Módszer felülbíráló C # - Bevezetés - Lépések - A kényszerítés használata

Tartalomjegyzék:

Anonim

Bevezetés a C # módszer felülbírálására

Az egyszerű kifejezés alatt azt jelenti, hogy módosítani kell a módszerek viselkedését. Mindannyian tudjuk a C ++ virtuális függvényét, amelyben a függvényt a származtatott osztály alaposztályába hívjuk meg. A C # -ben felülbíráló módszer hasonló kiváltságot biztosít, mint a C ++ virtuális funkciója. Ha példát szeretnénk mondani a madarakról, akkor minden madár ugyanazzal a tulajdonsággal rendelkezik, mint a légy, a szín stb. Tehát felülbírálhatjuk a Madár bázis osztály módszerét olyan származtatott osztályokban, mint egy papagáj, veréb, varjú stb.

Hogyan lehet az elsőbbséget élvezni a C # -ben?

Tegyük fel, hogy alkalmazásunknak az a követelménye, hogy megváltoztassa az alap osztály módszer viselkedését egy származtatott osztályban, akkor a módszer felülírására kell törekednünk. Ennek eléréséhez létre kell hoznunk a módszert a származtatott osztályban, ugyanolyan aláírással az alaposztályban, egy másik feladat elvégzéséhez. Mielőtt megtanulnánk alkalmazni a felülíró technikát, szem előtt kell tartanunk az alábbi pontokat.

  • A C # programozásban a módszer felülbírálását futási idő polimorfizmusnak, késői kötésnek vagy dinamikus polimorfizmusnak is nevezik.
  • Csak a származtatott osztályokban a módszer felülbírálása lehetséges. Mert egy módszer felülbírálásra kerül az alap osztályból származó származtatott osztályban.
  • A módszernek nem virtuális vagy statikus módszernek kell lennie a felülbíráláshoz.
  • Mind az felülbírálási módszer, mind a virtuális módszer hozzáférési szintjének módosítójának azonosnak kell lennie.

A felülírási nyilatkozat által felülbírált módszert úgy hívják, hogy felülbírált alap módszer. Ez jelen lesz az alap osztályban. A felülbírált alap módszer lehet absztrakt, felülírható vagy virtuális. A friss implementáció, az úgynevezett felülbíráló módszer végrehajtása ettől az alaposztálytól származik.

Különböző kulcsszavakat használunk a módszer felülbírálására. Ők,

1) Virtuális kulcsszó

Mi, a fordító találkozik a virtuális kulcsszóval a programban, megérti, hogy ez a módszer bármelyik származtatott osztályával felülbírálható. A szerkezet az alábbiak szerint alakul.

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

2) A kulcsszó felülbírálása

Ez a származtatott osztályban van jelen. Azt mondja a fordítónak, hogy ez a módszer felülbírálja az azonos névvel és aláírással rendelkező módszert az alaposztályban.

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

Példa

Először vizsgáljuk meg a példát a Virtuális és felülbíráló kulcsszó használata nélkül.

Kód:

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

Kimenet:

A fenti példában létrehoztunk egy Derived osztály Parrotand objektumot, amely hivatkozását a Birds típusú referencia változó objektumban tárolja.

A következő lépésben a referencia változó objektumot felhasználva meghívjuk a Color () függvényt. Mivel az objektum egy hivatkozást tartalmaz egy Parrot típusú objektumra, természetes, hogy elvárjuk, hogy a Parrot osztály Color () függvénye végrehajtásra kerüljön. De tévedünk. A programozás szépsége nem engedi, hogy megtörténjen.

Meglepetésünkre, hogy végrehajtásra kerül a Madarak osztályának Color () módszere. Ennek oka az, hogy a függvényt a hivatkozás típusa alapján, és nem a referenciaváltozó-objektum hivatkozása alapján hívják meg. Mivel az objektum egy Birds típusú hivatkozás, a Birds osztály Color () függvényét hívjuk meg, függetlenül attól, kire az objektum utal.

Most írjuk át ugyanazt a programot virtuálisan és felülírjuk. Ezúttal lépésről lépésre járunk a jobb megértés érdekében.

Hozzon létre egy alaposztályt bármilyen névvel. Itt madarakat használom. Írjon módszert a virtuális kulcsszóval. Ez lesz a felülbírált módszerünk, amelyet felülírunk az örökölt osztályban. A módszer belsejében írjon be néhány üzenetet a konzolba nyomtatáshoz.

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

Most hozzunk létre még egy osztályú papagájot. Ezúttal az alaposztálytól örököljük, amelyet korábban készítettünk, azaz a Madarakat. Az örökléshez a ':' szimbólumot használjuk.

Parrot osztály: Madarak

Írjon egy funkciót felülbíráló kulcsszóval, és írjon egy üzenetet. Győződjön meg arról, hogy a származtatott osztály metódus neve és aláírása megegyezik az alap osztály metódus nevével és aláírásával.

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

Még egy osztályra van szükségünk a funkció végrehajtásához, hogy ellenőrizzük a felülbírálást. Hozzon létre egy osztályt bármilyen névvel. Azon belül írja be a Fő funkciót.

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

Hozzon létre egy objektumot a szülő osztályból, és az osztály objektumával aktiválja a függvényt. Ez meghívja a Madarak osztályban lévõ színmódot.

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

Most hozza létre a származtatott osztály objektumát, és hívja meg a Színmódszert. Ez felhívja a papagáj osztály színes módszerét.

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

Meg tudja tippelni a kimenetet a program futtatásakor? Ez az alább látható.

Kimenet:

A Kulcsszavak felülbírálása és a virtuális lehetővé teszi az alaposztály és az abból származó osztálymódszerek külön-külön történő hivatkozását bármikor, még akkor is, ha a módszer neve és aláírása megegyezik.

Következtetés

Ebben a cikkben megértettük a módszer felülbírálását, a módszer felülíró szükségességét, a felülíró elv valós példáját, az elérés módját, a virtuális és felülíró kulcsszavak használatának szükségességét, valamint a kód használatának felülbírálásának példáját. Megállapíthatjuk, hogy a felülbírálás a polimorfizmus egyik hasznos tulajdonsága, amely megváltoztathatja az alap osztály módszer viselkedését a származtatott osztályban.

Ajánlott cikkek

Ez egy útmutató a C # módszer felülbíráló módszeréhez. Itt tárgyaljuk a Bevezetést, Hogyan lehet felülbíráló és különféle kulcsszavakat használni a felülbíráló módszerhez, valamint példákat és lépéseket. A következő cikkeket is megnézheti további információkért -

  1. C # Funkciók
  2. C # parancsok
  3. Mi a többszálú C # -ben?
  4. C # karakterlánc funkciók
  5. Útmutató a C ++ felülbírálásához
  6. A Java alapon érvényes
  7. Többszálú C # módszerrel