overbelastet metoder er metoder i samme klasse som deler samme navn, men akseptere ulike variable typer som argumenter . For eksempel kan en klasse inneholde to forskjellige " add " metoder : en som godtar to doble verdier , " legge til ( doble a, double b ) ", og en som godtar to heltall , " add ( int a, int b ) . "Datamaskinen avgjør automatisk hvilken metode som skal ringe på kjøre- tid basert på de variable typer blir sendt til metoden . Fleksibilitet
overbelastet metoder gi programmerere fleksibilitet til å kalle en lignende metode for ulike typer data . Hvis du arbeider på en matematikk- program , for eksempel, kan du bruke overbelastning til å lage flere " formere " klasser , som hver multipliserer et annet antall type argument: den enkleste " formere ( int a, int b )" ; multipliserer to heltall , jo mer komplisert metode " formere (dobbel a, int b , int c )" multipliserer en dobbel med to heltall - du kan da kalle " multiplisere " på hvilken som helst kombinasjon av variabler som du opprettet en overbelastet metode for og få riktig resultat.
Constructors
Overbelastning er også brukt på konstruktører til å lage nye objekter gitt ulike mengder data . For eksempel kan du bruke overbelastning å opprette tre forskjellige konstruktører for en "House " objekt med et husnummer , gatenavn og farge variabler . Den enkleste konstruktør "House ( )" tar ingen argumenter og skaper et hus med standard eller tomme variabler . En mer kompleks konstruktør , "House ( int husnummer , String gatenavnet ) , " skaper et hus med den angitte husnummer og gatenavn , men en standard eller tom farge. Det mest kompliserte konstruktør , "House ( int husnummer , String gatenavnet , String farge) , " skaper et hus med alle de angitte opplysninger , og ingenting som standard . Du kan deretter opprette et hus objekt basert på tilgjengelig informasjon for selskapet , med den utilgjengelige informasjon tomt eller ved mislighold .
Tvetydig Referanser
overbelastet metoder må bruker ulike antall eller typer av argumenter for å unngå tvetydighet . Hvis du oppretter to metoder i samme klasse som har samme navn og akseptere to heltall som argumenter , vil Java kompilatoren være ute av stand til å skille mellom de to, selv om input variabler har forskjellige navn . For eksempel , metoden " add ( int a, int b )" ikke kan eksistere i samme klasse som metoden "add ( int c , int d) ."
Tilbake Typer
Du må definere en retur type for hver overbelastet metoden . Metoder kan ha ulike retur typer - for eksempel " add ( int a, int b )" kan returnere et heltall , mens " add ( dobbel a, double b ) " returnerer en dobbel. Imidlertid kan Java ikke skille mellom to ulike metoder basert på deres retur type. Derfor, " int multipliser (dobbel a, double b )" ikke kan eksistere i samme klasse som "dobbel formere (dobbel a, double b ) . "