Fordele og ulemper ved overbelastningsmetoden i Java

Overbelastede metoder er metoder i samme klasse, der deler det samme navn, men som accepterer forskellige variabeltyper som argumenter. For eksempel kan en klasse indeholde to forskellige "add"-metoder: en, der accepterer to dobbelte værdier, "add (double a, double b)," og en, der accepterer to heltalsværdier, "add (int a, int b)." Computeren bestemmer automatisk, hvilken metode der skal kaldes ved kørsel baseret på de variabeltyper, der sendes til metode.

Fleksibilitet

Overbelastede metoder giver programmører fleksibiliteten til at kalde en lignende metode for forskellige typer data. Hvis du for eksempel arbejder på et matematikprogram, kan du bruge overloading til at oprette flere "multiplicer" klasser, hver af dem multiplicerer et forskelligt antal argumenttyper: det enkleste "multiplicerer (int a, int b)" multiplicerer to heltal; den mere komplicerede metode "multiplikér (dobbel a, int b, int c)" multiplicerer en dobbelt med to heltal -- du kunne så kald "multiply" på enhver kombination af variabler, som du har oprettet en overbelastet metode til, og modtag det korrekte resultat.

Dagens video

Konstruktører

Overbelastning bruges også på konstruktører til at skabe nye objekter givet forskellige mængder data. For eksempel kan du bruge overbelastning til at oprette tre forskellige konstruktører til et "Hus"-objekt med et husnummer, gadenavn og farvevariabler. Den enkleste konstruktør "House()" tager ingen argumenter og opretter et hus med standard eller tomme variabler. En mere kompleks konstruktør, "Hus (int houseNumber, String streetName)" opretter et hus med det angivne husnummer og gadenavn, men en standard eller tom farve. Den mest komplekse konstruktør, "Hus (int houseNumber, String streetName, String color)" opretter et hus med alle de specificerede oplysninger og efterlader intet som standard. Du kan derefter oprette et husobjekt baseret på den information, der aktuelt er tilgængelig, med den utilgængelige information tom eller som standard.

Tvetydige referencer

Overbelastede metoder skal bruge forskellige tal eller typer argumenter for at undgå tvetydighed. Hvis du opretter to metoder i samme klasse, der har samme navn og accepterer to heltal som argumenter, vil Java-kompileren vil ikke være i stand til at skelne mellem de to, selvom inputvariablerne har forskellige navne. For eksempel kan metoden "add (int a, int b)" ikke eksistere i samme klasse som metoden "add (int c, int d)."

Returtyper

Du skal definere en returtype for hver overbelastet metode. Metoder kan have forskellige returtyper -- for eksempel kan "add (int a, int b)" returnere et heltal, mens "add (double a, double b)" returnerer en double. Java kan dog ikke skelne mellem to forskellige metoder baseret på deres returtype. Derfor kan "int multiplikation (dobbelt a, dobbelt b)" ikke eksistere i samme klasse som "dobbelt gange (dobbelt a, dobbelt b)."