Overbelastede er metoder i samme klasse , der deler det samme navn , men accepterer forskellige variable typer som argumenter . For eksempel kan en klasse indeholde to forskellige " add " metoder : en, der accepterer to dobbelte værdier , " tilføjer ( dobbelt a , dobbelt b ) ", og en, der accepterer to heltalsværdier , "add ( int a, int b). "The computer automatisk afgør , hvilken metode til at kalde på run -time baseret på de variable typer der væltes til metoden. Fleksibilitet
Overbelastede metoder giver programmører mulighed for at kalde en lignende metode for forskellige typer af data. Hvis du arbejder på en matematik -program , for eksempel, kan du bruge overbelastning til at oprette flere " formere " klasser , som hver ganger et forskelligt antal type argument : den enkleste " formere ( int a , int b )" ; ganger to heltal , jo mere kompliceret metode " formere ( dobbelt a , int b , int c )" ganger en dobbeltseng med to heltal - du kan derefter kalde " formere " på enhver kombination af variabler, som du oprettede en overbelastet metode til og modtage den rette resultat.
Constructors
Overbelastning bruges også på konstruktører til at skabe nye objekter gives forskellige mængder af data. For eksempel kan du bruge overbelastning at oprette tre forskellige konstruktører for en " House" objekt med et husnummer , gadenavn og farve variabler. Den enkleste konstruktør " Hus ( ) " tager ingen argumenter og skaber et hus med misligholdelse eller tomme variabler. En mere kompleks konstruktør , "Hus ( int husnummer , String gadenavnet ) , " opretter et hus med det angivne husnummer og vejnavn , men en standard eller tomme farve. Den mest komplekse konstruktør , "Hus ( int husnummer , String gadenavnet , String farve), " opretter et hus med alle de angivne oplysninger , så intet som standard. Du kan derefter oprette et hus objekt baseret på de foreliggende oplysninger , idet det utilgængelige oplysninger tomt eller ved misligholdelse .
Tvetydige Referencer
Overbelastede metoder skal bruger forskellige numre eller typer af argumenter for at undgå tvetydighed . Hvis du opretter to metoder i samme klasse , der har det samme navn og acceptere to heltal som argumenter , vil Java compiler ikke være i stand til at skelne mellem de to, selv om Inputvariablerne har forskellige navne . For eksempel , metoden " add ( int a, int b )" kan ikke eksistere i samme klasse som den metode "add ( int c , int d ) ."
Returtyper
Du skal definere en returtype for hver overbelastet metode. Metoder kan have forskellige returtyper - for eksempel, " add ( int a , int b )" kan returnere et heltal, mens " add ( dobbelt a , dobbelt b )" returnerer en double . Dog kan Java ikke skelne mellem to forskellige metoder baseret på deres tilbagevenden type. Derfor, " int formere (det dobbelte a , dobbelt b )" kan ikke eksistere i samme klasse som "dobbelt formere (det dobbelte a , dobbelt b). "
< Br >