Klíčový rozdíl - přepsání vs přetížení v C #
Klíčový rozdíl mezi přepsáním a přetížením v C # je, že vazba přepsaného volání metody na její definici se děje za běhu, zatímco vazba přetíženého volání metody na její definici se děje v době kompilace.
C # je univerzální programovací jazyk vyvinutý společností Microsoft. Hlavní výhodou C # je, že podporuje objektově orientované programování (OOP). Jedním pilířem OOP je polymorfismus. Poskytuje objektu více chování. V polymorfismu existují dva typy známé jako přepsání a přetížení. Tento článek popisuje rozdíl mezi přepsáním metody a přetížením v C #.
OBSAH
1. Přehled a klíčový rozdíl
2. Co je přepsání v C #
3. Co je přetížení v C #
4. Podobnosti mezi přepsáním a přetížením v C #
5. Porovnání vedle sebe - přepsání vs přetížení v C # ve formě tabulky
6. Shrnutí
Co je přepsání v C #?
V OOP existuje ještě jeden důležitý koncept - dědičnost. Je použít atributy a metody již existující třídy. Zlepšuje opětovnou použitelnost kódu. Již existující třída je základní třídou a nová třída je známá jako odvozená třída. Při přepsání polymorfismu by měla existovat základní třída a odvozená třída. Vazba přepsaného volání metody na definici se děje za běhu. Příklad je následující.
Obrázek 01: Program C # s přepsáním
Podle výše uvedeného programu je třída Shape základní třídou a obsahuje metodu zobrazení. Třída Obdélník a Trojúhelník jsou odvozené třídy. Tyto odvozené třídy mají také stejné zobrazení metody s vlastní implementací.
Nejprve se vytvoří referenční proměnná obj. Ukazuje na objekt Shape. Spustí se tedy metoda zobrazení třídy Shape. Potom referenční proměnná ukazuje na Rectangle objekt. Spustí se tedy metoda zobrazení třídy Obdélník. Nakonec referenční proměnná ukazuje na objekt Triangle. Spustí se tedy metoda zobrazení třídy Triangle. Metoda zobrazení základní třídy je přepsána metodami zobrazení odvozených tříd.
O způsobu spuštění se rozhoduje za běhu. Třída Shape je napsána klíčovým slovem „virtual“. Třídy Rectangle a Triangle jsou psány s klíčovým slovem 'override'. Pokud tato klíčová slova nejsou použita, výstup vytiskne obsah metody zobrazení třídy Shape pro všechny.
Co je přetížení v C #?
Při přetížení má několik metod stejný název, ale s různými parametry. Parametry mohou být různých typů. Metody mohou mít také různý počet parametrů. K přetížení metody dochází ve stejné třídě. Vazba přetížených metod na definici se děje v době kompilace. Viz níže uvedený program C #.
Obrázek 02: Program C # s přetížením
Podle výše uvedeného programu má třída A dvě metody se stejným názvem, které se říká sum. Mají různé typy parametrů. V hlavním programu je vytvořen objekt A. Součet (2,3) vyvolá metodu součtu s celými čísly. Součet (5,1, 7,94) vyvolá metodu součtu s dvojnásobnými hodnotami. Obě metody mají stejný název a stejný počet parametrů. Ale typy parametrů se liší. Podle toho se volá požadovaná metoda. Přetížení může také nastat, pokud jsou názvy metod a typy parametrů stejné, ale počet parametrů se liší.
Jaká je podobnost mezi přepsáním a přetížením v C #?
Přepsání i přetížení v C # jsou typy polymorfismu
Jaký je rozdíl mezi přepsáním a přetížením v C #?
Rozdílný článek uprostřed před tabulkou
Přepsání vs přetížení v C # |
|
Přepsat v C # je poskytnout konkrétní implementaci v metodě odvozené třídy pro metodu, která již existuje v základní třídě. | Přetížení v C # je vytvořit více metod se stejným názvem s různými implementacemi. |
Parametry | |
V C # Overriding mají metody stejný název, stejné typy parametrů a stejný počet parametrů. | V C # přetížení mají metody stejný název, ale jiný počet parametrů nebo jiný typ parametrů. |
Výskyt | |
V C # dojde k přepsání v rámci základní třídy a odvozené třídy. | V C # dochází k přetížení v rámci stejné třídy. |
Závazná doba | |
Vazba přepsaného volání metody na její definici se děje za běhu. | Vazba přetíženého volání metody na jeho definici se děje v době kompilace. |
Synonyma | |
Přepsání se nazývá runtime polymorfismus, dynamický polymorfismus nebo pozdní vazba. | Přetížení se nazývá polymorfismus času kompilace, statický polymorfismus nebo časná vazba. |
Shrnutí - Přepsání vs přetížení v C #
Přepsání a přetížení jsou dva typy polymorfismu. Rozdíl mezi přepsáním a přetížením v C # je ten, že vazba přepsaného volání metody na její definici se děje za běhu, zatímco vazba přetíženého volání metody na její definici se děje v době kompilace.