Vad är metodöverbelastning?

Metodöverbelastning är en funktion i de flesta objektorienterade programmeringsspråk där två eller flera metoder delar samma namn men har olika parametrar. Specifikt är antalet, datatypen och / eller ordningen på parametrarna olika. När koden sammanställs kommer den rätta metoden att väljas automatiskt baserat på hur den heter. Metoder är också kända som funktioner i vissa programmeringsspråk, så metodöverbelastning kallas ibland funktioner för överbelastning.

Ett enkelt exempel på överbelastning av metoden är en metod som beräknar kvadratets area. Det kan definieras som getArea (Square s). Denna metod kan överbelastas för att ytterligare beräkna cirkelns area genom att lägga till metoden getArea (cirkel c).

Det primära kravet för överbelastning av metoder är att metoderna delar samma namn. Deras metodsignaturer - metodnamnet, antalet parametrar och parameterdatatyperna - skulle annars vara unika. På detta sätt kan kompilatorn bestämma vilken metod som ska köras.

Konstruktörer, de metoder som används för att instansera objekt, är ofta överbelastade. Detta görs för att initialisera ett objekt med icke-standardvärden. Till exempel kan ett anställdsobjekt med två fält (namn och födelsedatum eller dob) ha följande överbelastade konstruktörer: Anställd (), Anställd (namn) och Anställd (namn, dob). Den första konstruktören skapar ett anställdsobjekt med tomma namn- och dob-fält. Den andra anger namnfältet, men lämnar dob-fältet tomt, och det tredje definierar både namn- och dob-fältet.

Metodöverbelastning görs ofta för att få mer än en metod att visas logiskt som en enda metod. I getArea () -exemplet, medan det fysiskt finns två metoder, presenteras den som ringer upp en enda, logisk getArea () -metod. På detta sätt kan getArea () utvidgas till att arbeta med andra former - trianglar, trapezoider och så vidare - medan det fortfarande presenteras sig logiskt som en enda metod.

Metoder överbelastas också för att bevara bakåtkompatibilitet. En metod som gör en komplex beräkning kan få ett nytt krav för att valfritt utföra samma beräkning med en liten förändring. En ny parameter läggs till i metoden som bestämmer hur beräkningen ska utföras - det gamla sättet eller det nya sättet.

För att undvika att hitta alla fall där metoden kallas och lägga till den nya parametern kan metoden överbelastas. Den nya metoden har den gamla signaturen och kallas med befintlig kod. Den kommer inte att innehålla någon logik i sig själv och kommer helt enkelt att anropa den modifierade metoden och passera som standard "gammalt sätt" för den nya parametern. Ny kod kommer att anropa den modifierade metoden och skicka den nya parametern med lämpligt värde, gammalt eller nytt sätt.

Metodöverbelastning är en typ av polymorfism, där samma logiska metod i praktiken kan användas på flera sätt. Metodöverbelastning är inte densamma som åsidosättande av metod. Övervägande metod är där definitionen av en metod i en förälderklass ändras av en barnklass. I detta fall har båda metoderna samma signatur.

ANDRA SPRÅK

Hjälpte den här artikeln dig? Tack för feedbacken Tack för feedbacken

Hur kan vi hjälpa? Hur kan vi hjälpa?