Preťaženie metódy, známe aj ako preťaženie funkcie alebo polymorfizmus kompilácie času, predstavuje koncept dvoch alebo viacerých metód s rovnakým názvom, ale s rôznym podpisom v rovnakom rozsahu. Existuje mnoho programovacích jazykov, ktoré podporujú túto funkciu: Ada, C ++, C #, D a Java.
Príklad preťaženia metódy v C #
class floating circleArea = pi * polomer * radius; } int Polygon (int dĺžka, int šírka) {int rectangleArea = dĺžka * šírka; } int Polygon (int strana) {int squareArea = strana * strana; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class floating circleArea = pi * polomer * radius; } int Polygon (int dĺžka, int šírka) {int rectangleArea = dĺžka * šírka; } int Polygon (int strana) {int squareArea = strana * strana; }} |
Ako je uvedené v predchádzajúcom príklade, metóda "Polygon" je preťažená trikrát s odlišným podpisom metódy, tj typ alebo počet parametrov je odlišný.
Overovanie metódy
Prepísanie metódy, známe aj ako funkcie Overriding alebo Runtime polymorphism, je funkcia OOP, ktorá umožňuje podriadenej triede poskytovať vlastnú implementáciu metóde definovanej v materskej triede. Implementácia v podradenej triede prevyšuje definíciu metódy v základnej triede za predpokladu, že metóda v podriadenej triede by mala mať rovnaký názov, podpis a typ návratu.
Príklad overovania metódy v C #
class Zdroj1 {public void draw () {Console.Writeline ("Som v triede Source1"); }} trieda Source2 rozširuje Source1 {public void draw () {Console.Writeline ("Som v triede Source2"); }}1 2 3 4 5 6 7 8 9 10 | trieda Zdroj1 {public void draw () {Console. Writeline ("Som v triede Zdroj1"); }} trieda Source2 rozširuje Source1 {public void draw () {Console. Writeline ("Ja som v triede Source2"); }} |
Tu metóda kreslenia v triede Source2 prepisuje metódu kreslenia definovanú v triede Source1.
Rozdiel medzi preťažením metódy a overovaním metód
- Metóda preťaženia metódy musí mať iný podpis. Pri metóde musia mať nadradené metódy rovnaký podpis.
- Funkcia Preťaženie znamená "pridať" alebo "rozšíriť" viac na správanie metódy. Prepísanie funkcie je úplne "zmeniť" alebo "predefinovať" správanie metódy.
- Preťaženie metód sa používa na dosiahnutie polymorfizmu kompilácie času; metóda overriding sa používa na dosiahnutie run-time polymorphism.
- V preťažení metódy / funkcie kompilátor vie, ktorý objekt priradený k akej triedy v čase kompilácie, ale v override metódy nie je známa až do runtime.
- Funkcia Preťaženie prebieha v rovnakej triede, zatiaľ čo Preradenie prebieha v triede odvodenej od základnej triedy.