Fördelar och nackdelar med överbelastningsmetoden i Java

click fraud protection

Överbelastade metoder är metoder i samma klass som delar samma namn men accepterar olika variabeltyper som argument. Till exempel kan en klass innehålla två olika "add"-metoder: en som accepterar två dubbla värden, "add (double a, double b)" och en som accepterar två heltalsvärden, "add (int a, int b)." Datorn bestämmer automatiskt vilken metod som ska anropas vid körning baserat på de variabeltyper som skickas till metod.

Flexibilitet

Överbelastade metoder ger programmerare flexibiliteten att anropa en liknande metod för olika typer av data. Om du till exempel arbetar med ett matematikprogram kan du använda överbelastning för att skapa flera "multiplicera" klasser, var och en multiplicerar olika antal typer av argument: det enklaste "multiplicera (int a, int b)" multiplicerar två heltal; den mer komplicerade metoden "multiplicera (dubbel a, int b, int c)" multiplicerar en dubbel med två heltal -- du kan sedan anropa "multiplicera" på valfri kombination av variabler som du skapade en överbelastad metod för och få rätt resultat.

Dagens video

Konstruktörer

Överbelastning används också på konstruktörer för att skapa nya objekt med olika mängder data. Till exempel kan du använda överbelastning för att skapa tre olika konstruktörer för ett "Hus"-objekt med ett husnummer, gatunamn och färgvariabler. Den enklaste konstruktorn "House()" tar inga argument och skapar ett hus med standardvariabler eller tomma variabler. En mer komplex konstruktör, "Hus (int houseNumber, String streetName)," skapar ett hus med det angivna husnumret och gatunamnet, men en standardfärg eller tom färg. Den mest komplexa konstruktören, "Hus (int houseNumber, String streetName, String color)" skapar ett hus med all specificerad information och lämnar ingenting som standard. Du kan sedan skapa ett husobjekt baserat på den information som för närvarande är tillgänglig, med den otillgängliga informationen tom eller som standard.

Tvetydiga referenser

Överbelastade metoder måste använda olika antal eller typer av argument för att undvika oklarheter. Om du skapar två metoder i samma klass som har samma namn och accepterar två heltal som argument, Java-kompilatorn kommer inte att kunna skilja mellan de två, även om indatavariablerna har olika namn. Till exempel kan metoden "add (int a, int b)" inte existera i samma klass som metoden "add (int c, int d)."

Returtyper

Du måste definiera en returtyp för varje överbelastad metod. Metoder kan ha olika returtyper -- till exempel "add (int a, int b)" kan returnera ett heltal, medan "add (double a, double b)" returnerar en dubbel. Java kan dock inte skilja mellan två olika metoder baserat på deras returtyp. Därför kan "int multiplicera (dubbel a, dubbel b)" inte existera i samma klass som "dubbel multiplicera (dubbel a, dubbel b)."