Hvad er metodeoverbelastning?
Metodeoverbelastning er en funktion i de fleste objektorienterede programmeringssprog, hvor to eller flere metoder deler samme navn, men har forskellige parametre. Specifikt er antallet, datatypen og / eller rækkefølgen af parametrene forskellige. Når koden er samlet, vælges den korrekte metode automatisk ud fra, hvordan den kaldes. Metoder er også kendt som funktioner i nogle programmeringssprog, så metodeoverbelastning kaldes sommetider funktionsoverbelastning.
Et simpelt eksempel på overbelastning af metoden er en metode, der beregner arealet af en firkant. Det kan defineres som getArea (Square s). Denne metode kunne overbelastes for yderligere at beregne cirkelområdet ved at tilføje metoden getArea (cirkel c).
Det primære krav til overbelastning af metoder er, at metoderne deler det samme navn. Deres metodesignaturer - metodens navn, antallet af parametre og parameterdatatyperne - skulle ellers være unikke. På denne måde kan kompilatoren bestemme, hvilken metode der skal udføres.
Konstruktører, de metoder, der bruges til at øjeblikkelige genstande, overbelastes ofte. Dette gøres for at initialisere et objekt med ikke-standardværdier. For eksempel kan et medarbejderobjekt med to felter (navn og fødselsdato eller dob) have følgende overbelastede konstruktører: Medarbejder (), Medarbejder (navn) og Medarbejder (navn, dob). Den første konstruktør opretter et medarbejderobjekt med blanke navn- og dobbeltfelter. Den anden indstiller navnefeltet, men lader dobfelfeltet være tomt, og det tredje definerer både navnefeltet og dobbeltfelterne.
Overbelastning af metoden udføres ofte for at få mere end en metode til at fremstå logisk som en enkelt metode. I eksemplet getArea (), mens der fysisk er to metoder, præsenteres den, der ringer op, med en enkelt, logisk getArea () -metode. På denne måde kan getArea () udvides til at arbejde på andre former - trekanter, trapezoider osv. - mens den stadig præsenterer sig logisk som en enkelt metode.
Metoder er også overbelastet for at bevare bagudkompatibilitet. En metode, der udfører en kompleks beregning, kunne få et nyt krav til valgfrit at udføre den samme beregning med en lille ændring. En ny parameter føjes til metoden, der bestemmer, hvordan beregningen skal udføres - den gamle måde eller den nye måde.
For at undgå at skulle finde alle de tilfælde, hvor metoden kaldes, og tilføje den nye parameter, kan metoden overbelastes. Den nye metode har den gamle signatur og kaldes med den eksisterende kode. Det vil ikke indeholde nogen logik i sig selv, og vil blot kalde den ændrede metode og videregive som standard "gammel måde" for den nye parameter. Ny kode kalder den ændrede metode og passerer den nye parameter med den relevante værdi, gammel måde eller ny måde.
Metodeoverbelastning er en type polymorfisme, hvor den samme logiske metode i praksis kan bruges på flere måder. Overbelastning af metoden er ikke den samme som metodeoverskridelse. Fremgangsmådeoverskridende er, hvor definitionen af en metode i en forældreklasse ændres af en barneklasse. I dette tilfælde har begge metoder den samme signatur.