
Metodeoverbelastning, også kjent som funksjon Overloading eller Compile Time Polymorphism, er et konsept om å ha to eller flere metoder med samme navn, men forskjellig signatur i samme omfang. Det er mange programmeringsspråk som støtter denne funksjonen: Ada, C ++, C #, D og Java.
Eksempel på metodeoverbelastning i C #
klasse OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int lengde, int bredde) {int rektangelArea = lengde * bredde; } int Polygon (int side) {int squareArea = side * side; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | klasse OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int lengde, int bredde) {int rektangelArea = lengde * bredde; } int Polygon (int side) {int squareArea = side * side; }} |
Som vist i eksemplet ovenfor, blir metoden 'Polygon' overbelastet 3 ganger med annen metode signatur, dvs. typen eller antall parametere er forskjellige.
Metode Overstyring
Metode-overstyring, også kjent som funksjonstrytende eller Run-time-polymorfisme, er en OOP-funksjon som tillater en barneklasse å gi sin egen implementering til metoden som er definert i foreldreklassen. Gjennomføringen i barneklassen overstyrer definisjonen av metoden i grunnklassen, forutsatt at metoden i barneklassen skal ha samme navn, signatur og returtype.
Eksempel på metode overstyring i C #
klasse Source1 {public void draw () {Console.Writeline ("Jeg er i klassen Source1"); }} klasse Source2 utvider Source1 {public void draw () {Console.Writeline ("Jeg er i klassen Source2"); }}1 2 3 4 5 6 7 8 9 10 | klasse Source1 {public void draw () {Console. Writeline ("Jeg er i klassen Kilde1"); }} klasse Source2 utvider Source1 {public void draw () {Console. Writeline ("Jeg er i klassen Source2"); }} |
Her tegner tegnemetoden i Source2-klassen tegnemetoden som er definert i Source1-klassen.
Forskjellen mellom metodeoverbelastning og overstyring av metode
- I Metode overbelastning må metodene ha en annen signatur. I metode må overordnede metoder ha samme signatur.
- Funksjon Overbelastning er å "legge til" eller "utvide" mer til metodens oppførsel. Funksjonens overordnede er å fullstendig "endre" eller "omdefinere" en oppførsel av en metode.
- Metodeoverbelastning brukes til å oppnå kompileringstidspolymorfisme; Metoden overstyring brukes til å oppnå run-time polymorphism.
- I metode / funksjon overbelastning vet kompilatoren hvilket objekt som er tildelt til hvilken klasse på kompileringstidspunktet, men i metode overstyring, er denne informasjonen ikke kjent før runtime.
- Funksjon Overbelastning foregår i samme klasse, mens Overriding foregår i en klasse avledet fra en baseklasse.