Skip to main content

Vad är överbelastning av metoden?

Metodöverbelastning är en funktion på de flesta objektorienterade programmeringsspråk där två eller flera metoder har samma namn men har olika parametrar.Specifikt är numret, datatypen och/eller ordningen för parametrarna olika.När koden sammanställs väljs den rätta metoden automatiskt utifrån hur den kallas.Metoder är också kända som funktioner på vissa programmeringsspråk, så överbelastning av metod kallas ibland funktionsöverbelastning.

Ett enkelt exempel på metodöverbelastning skulle vara en metod som beräknar området för en kvadrat.Det kan definieras som Getarea (fyrkantiga S).Denna metod kan överbelastas för att dessutom beräkna cirkelområdet genom att lägga till metoden getArea (cirkel C).

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

Konstruktörer, metoderna som används för att instansera objekt, är ofta överbelastade.Detta görs för att initialisera ett objekt med icke-försvarsvä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.Det andra ställer in namnet Namn, men lämnar DOB -fältet tomt, och det tredje definierar både namn- och DOB -fälten.

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

Metoder är också överbelastade för att bevara bakåtkompatibilitet.En metod som gör en komplex beräkning kan ges 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 man utför beräkningen mdash;Det gamla sättet eller det nya sättet.

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

Metodöverbelastning är en typ av polymorfism, där samma logiska metod kan användas på flera sätt.Metodöverbelastning är inte densamma som metodöverskridande.Metodöverträdelse är där definitionen av en metod i en överordnad klass ändras av en barnklass.I detta fall kommer båda metoderna att ha samma signatur.