Přepsání metody v C # - Úvod Kroky Použití převažujícího

Obsah:

Anonim

Úvod k potlačení metody v C #

Jednoduše převažující znamená schopnost modifikovat chování metod. Všichni víme o virtuální funkci v C ++, ve které vyvoláme funkci ze základní třídy v odvozené třídě. Metoda přepsání v C # poskytuje podobné oprávnění jako virtuální funkce v C ++. Jako příklad ptáků budou mít všichni ptáci stejný atribut jako moucha, barva atd. Různí ptáci však budou mít jiný způsob létání a barva se bude lišit od ptáka k ptákovi. Můžeme tedy potlačit metody základní třídy Bird v odvozených třídách, jako je papoušek, vrabec, vrána atd.

Jak použít Overriding v C #?

Předpokládejme, že naše aplikace má požadavek na změnu chování metody základní třídy v odvozené třídě, pak bychom měli jít na přepsání metody. Abychom toho dosáhli, musíme v odvozené třídě vytvořit metodu se stejným podpisem v základní třídě, abychom mohli provést jinou úlohu. Než se naučíme používat převažující techniku, musíme mít na paměti níže uvedené body.

  • V programování C # se metoda Overriding také nazývá polymorfismus doby běhu, pozdní vazba nebo dynamický polymorfismus.
  • Pouze u odvozených tříd je možné přepsání metody. Protože metoda je v odvozené třídě ze základní třídy přepsána.
  • Metoda by měla být nevirtuální nebo statickou metodou pro přepis.
  • Modifikátor přístupové úrovně metody override a virtuální metody by měl být stejný.

Metoda, která je přepsána deklarací přepsání, se nazývá přepsaná základní metoda. To bude přítomno v základní třídě. Přepsaná základní metoda může být abstraktní, přepsaná nebo virtuální. Z této základní třídy se zdědí nová implementace zvaná metoda override.

K přepisování metod používáme různá klíčová slova. Oni jsou,

1) Virtuální klíčové slovo

My kompilátor narazí na virtuální klíčové slovo v programu, chápe, že tuto metodu lze přepsat kteroukoli z jejích odvozených tříd. Struktura je níže.

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

2) Přepsat klíčové slovo

Toto je přítomno ve odvozené třídě. Řekne kompilátoru, že tato metoda potlačuje metodu se stejným názvem a podpisem v základní třídě.

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

Příklad

Nejprve se podívejme na příklad bez použití klíčového slova Virtual a override.

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

Výstup:

Ve výše uvedeném příkladu jsme vytvořili objekt odvozené třídy Parrotand a uložili jeho odkaz do objektu referenční proměnné typu Birds.

V dalším kroku vyvoláme pomocí objektu referenční proměnné funkci Color (). Protože objekt obsahuje odkaz na objekt typu Parrot, je přirozené, že očekáváme spuštění funkce Color () třídy Parrot. Ale mýlíme se. Krása programování nedovolí, aby se to stalo.

K našemu překvapení se používá metoda Color () třídy Birds. Je to proto, že funkce je vyvolána na základě typu odkazu a ne na to, na co odkazuje referenční proměnný objekt. Protože objekt je odkazem na typ Birds, bude vyvolána funkce Color () třídy Birds, bez ohledu na to, na který objekt odkazuje.

Nyní přepíšeme stejný program virtuálním a přepíšeme. Tentokrát budeme postupovat krok za krokem pro lepší porozumění.

Vytvořte základní třídu s libovolným názvem. Tady používám Birds. Napište metodu s virtuálním klíčovým slovem. Toto bude naše přepsaná metoda, kterou přepíšeme ve zděděné třídě. Uvnitř metody napište nějakou zprávu pro tisk v konzole.

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

Nyní vytvořte ještě jednu třídu Parrot Tentokrát ji zdědíme ze základní třídy, kterou jsme vytvořili dříve, tj. Birds. Pro zdědění používáme symbol ':'.

třída Papoušek: Ptáci

Zde napište funkci s přepsáním klíčového slova a napište nějakou zprávu. Ujistěte se, že název metody a podpis v odvozené třídě odpovídají názvu metody a podpisu v základní třídě.

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

Potřebujeme ještě jednu třídu, abychom provedli tuto funkci a zkontrolovali převažující. Vytvořte třídu s libovolným jménem. Uvnitř toho napište hlavní funkci.

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

Vytvořte objekt nadřazené třídy a spusťte funkci pomocí objektu třídy. Vyvolá to metodu Color přítomnou ve třídě Birds.

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

Nyní vytvořte objekt odvozené třídy a volejte metodu Color. Vyvolá to metodu Color třídy Parrot.

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

Můžete hádat výstup, když spustíme program? To je znázorněno níže.

Výstup:

Přepsat klíčová slova a virtuální umožňují kdykoli vyvolat metody základní třídy a odvozené třídy samostatně, i když jsou názvy metod a podpisy stejné.

Závěr

V tomto článku jsme pochopili překrývání metody, potřebu překrývání metody, příklad převažujícího principu v reálném světě, způsob, jak toho dosáhnout, nutnost použití virtuálních a přepisujících klíčových slov a příklad přepisování pomocí kódu. Můžeme dojít k závěru, že převažování je jedním z užitečných rysů polymorfismu, který můžeme změnit chování metody základní třídy v odvozené třídě.

Doporučené články

Toto je průvodce metodou Přepisování v C #. Zde diskutujeme úvod, jak používat převažující a různá klíčová slova pro přepisování metod spolu s příklady a kroky. Další informace naleznete také v následujících článcích -

  1. C # Funkce
  2. C # Příkazy
  3. Co je multithreading v C #?
  4. C # Řetězcové funkce
  5. Průvodce přepisováním v C ++
  6. Převažující v Javě
  7. Multithreading v C # s metodami