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 - metodnamnet, antalet parametrar och parameterdatatyperna - bör annars vara unika. På detta sättE -kompilator kan 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 namnet 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 - trianglar, trapezoider, and So vidare - 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 kommer att avgöra hur man ska utföra beräkningen - 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 en standard av "gammalt sätt" för den nya parametern. Ny kod kommer att ringa 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 i praktiken användas på flera sätt. MigThod -överbelastning är inte detsamma 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.

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?