A módszer túlterhelés, más néven Funkció-túlterhelés vagy Kompilációs idő polimorfizmus, olyan fogalom, amelynek során két vagy több azonos nevű, ugyanolyan hatókörű, de eltérő aláírású módszer van. Számos programozási nyelv támogatja ezt a funkciót: Ada, C ++, C #, D és Java.
Példa a C # túlterhelés módjára
class OverloadShapes {float Polygon (int sugár, float pi) {float circleArea = pi * sugár * sugár; } int Poligon (int hossz, int szélesség) {int rectangleArea = hossz * szélesség; } int Poligon (int oldal) {int squareArea = oldalsó * oldal; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class OverloadShapes {float Polygon (int sugár, float pi) {float circleArea = pi * sugár * sugár; } int Poligon (int hossz, int szélesség) {int rectangleArea = hossz * szélesség; } int Poligon (int oldal) {int squareArea = oldalsó * oldal; }} |
Amint az a fenti példában látható, a „Poligon” módszer 3-szor túlterhelt különböző módszer aláírással, azaz a paraméterek típusa vagy száma különbözik.
Módszer felülírása
A módszer felülbírálása, más néven Funkció felülírása vagy Futtatási idő polimorfizmus, egy OOP funkció, amely lehetővé teszi a gyermekosztály számára, hogy saját végrehajtását biztosítsa a szülő osztályban meghatározott módszerhez. A gyermekosztályban történő implementáció felülbírálja a bázis osztályban lévő módszer meghatározását, feltéve, hogy a gyermekosztályban alkalmazott módszernek azonos nevet, aláírást és visszatérési módot kell használnia.
Példa a C # -nál felülbíráló módszerre
class Source1 {public void draw () {Console.Writeline ("Az 1. osztályban vagyok"); }} Class Source2 kiterjeszti a Source1 {public void draw () {Console.Writeline ("A Source2 osztályban"); }}1 2 3 4 5 6 7 8 9 10 | class Source1 {public void draw () {Konzol. Writeline ("Én vagyok a Source1 osztályban"); }} Class Source2 kiterjeszti a Source1 {public void draw () {Console. Writeline ("Én vagyok a Source2 osztályban"); }} |
Itt a Source2 osztályban lévő rajzolási módszer felülbírálja a Source1 osztályban definiált rajzolási módszert.
A módszer túlterhelése és a módszer felülbírálása közötti különbség
- A módszer túlterhelésének módszereinek eltérő aláírással kell rendelkezniük. Módszerben az felülíró módszereknek azonos aláírással kell rendelkezniük.
- A függvény túlterhelésének célja, hogy „hozzáadja” vagy „bővítse” a módszer viselkedését. A funkció felülbírálása az, hogy teljesen megváltoztassa vagy újrafogalmazza a módszer viselkedését.
- A módszer túlterhelését a fordítási idő polimorfizmusának elérésére használjuk; A módszer felülbírálását a futási idő polimorfizmusának elérésére használjuk.
- A módszertan / funkció túlterhelés során a fordító tudja, hogy melyik objektum melyik osztályhoz tartozik az összeállítás idején, de az információt felülíró módszerben a runtime-ig nem ismert.
- A függvény túlterhelése ugyanabban az osztályban történik, míg a felülbírálás egy osztályból származik.