Metodeoverbelastning, også kendt som Function Overloading eller Compile Time Polymorphism, er et begreb om at have to eller flere metoder med samme navn men forskellig signatur i samme omfang. Der er mange programmeringssprog, der understøtter denne funktion: 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 længde, int bredde) {int rektangelArea = længde * 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 længde, int bredde) {int rektangelArea = længde * bredde; } int Polygon (int side) {int squareArea = side * side; }} |
Som vist i ovenstående eksempel overlades metoden 'Polygon' 3 gange med forskellig metode signatur, dvs. typen eller antallet af parametre er forskellige.
Metode Overstyring
Metode overordnet, også kendt som funktionstider eller Run-time-polymorfisme, er en OOP-funktion, der gør det muligt for en børneklasse at give sin egen implementering til den metode, der er defineret i forældersklassen. Gennemførelsen i barneklassen tilsidesætter definitionen af metoden i basisklassen, forudsat at metoden i barneklassen skal have 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 udvider 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 Source1"); }} klasse Source2 udvider Source1 {public void draw () {Console. Writeline ("Jeg er i klassen Source2"); }} |
Her overtræk tegnemetoden i Source2-klassen tegnemetoden, der er defineret i Source1-klassen.
Forskel mellem overbelastning af metode og overstyring af metode
- I Metode overbelastning metoder skal have en anden signatur. I metode skal overordnede metoder have samme signatur.
- Funktion Overloading er at "tilføje" eller "udvide" mere til metodeets adfærd. Funktion overordnet er at helt "ændre" eller "omdefinere" en fremgangsmådes adfærd.
- Metode overbelastning bruges til at opnå kompileringstid polymorfisme; Metodeoverstyring bruges til at opnå run-time polymorfisme.
- I metode / funktion overbelastning kender kompilatoren hvilken objekt der er tildelt til hvilken klasse på tidspunktet for kompilering, men i metode overstyring er disse oplysninger ikke kendt indtil runtime.
- Funktion Overbelastning foregår i samme klasse, mens Overriding finder sted i en klasse afledt af en baseklasse.