Fordelene og ulempene med overbelastningsmetoden i Java

Overbelastede metoder er metoder i samme klasse som deler samme navn, men som godtar forskjellige variabeltyper som argumenter. For eksempel kan en klasse inneholde to forskjellige «add»-metoder: en som godtar to doble verdier, «add (dobbel a, dobbel b)» og en som aksepterer to heltallsverdier, "add (int a, int b)." Datamaskinen bestemmer automatisk hvilken metode som skal kalles ved kjøring basert på variabeltypene som sendes til metode.

Fleksibilitet

Overbelastede metoder gir programmerere fleksibiliteten til å kalle en lignende metode for ulike typer data. Hvis du for eksempel jobber med et matematikkprogram, kan du bruke overbelastning for å lage flere "multipliser" klasser, hver av dem multipliserer et annet antall argumenttyper: det enkleste "multipliser (int a, int b)" multipliserer to heltall; den mer kompliserte metoden "multipliser (dobbel a, int b, int c)" multipliserer en dobbel med to heltall -- du kan da kall "multiply" på en hvilken som helst kombinasjon av variabler som du opprettet en overbelastet metode for og motta riktig resultat.

Dagens video

Konstruktører

Overbelastning brukes også på konstruktører for å lage nye objekter gitt forskjellige mengder data. For eksempel kan du bruke overbelastning til å lage tre forskjellige konstruktører for et "Hus"-objekt med et husnummer, gatenavn og fargevariabler. Den enkleste konstruktøren "House()" tar ingen argumenter og lager et hus med standard eller tomme variabler. En mer kompleks konstruktør, "Hus (int houseNumber, String streetName)," lager et hus med spesifisert husnummer og gatenavn, men en standard eller tom farge. Den mest komplekse konstruktøren, "Hus (int houseNumber, String streetName, String color)," oppretter et hus med all den spesifiserte informasjonen, og etterlater ingenting som standard. Du kan deretter opprette et husobjekt basert på informasjonen som er tilgjengelig for øyeblikket, med den utilgjengelige informasjonen tom eller som standard.

Tvetydige referanser

Overbelastede metoder må bruke forskjellige tall eller typer argumenter for å unngå tvetydighet. Hvis du oppretter to metoder i samme klasse som har samme navn og aksepterer to heltall som argumenter, vil Java-kompilatoren vil ikke kunne skille mellom de to, selv om inngangsvariablene har forskjellige navn. For eksempel kan metoden "add (int a, int b)" ikke eksistere i samme klasse som metoden "add (int c, int d)."

Returtyper

Du må definere en returtype for hver overbelastet metode. Metoder kan ha forskjellige returtyper -- for eksempel "add (int a, int b)" kan returnere et heltall, mens "add (dobbel a, dobbel b)" returnerer en dobbel. Java kan imidlertid ikke skille mellom to forskjellige metoder basert på returtypen. Derfor kan "int multiplikasjon (dobbel a, dobbel b)" ikke eksistere i samme klasse som "dobbel multiplikasjon (dobbel a, dobbel b)."