Java-metodöverbelastning (med exempel)

I den här artikeln lär du dig om metodöverbelastning och hur du kan uppnå det i Java med hjälp av exempel.

I Java kan två eller flera metoder ha samma namn om de skiljer sig åt i parametrar (olika antal parametrar, olika typer av parametrar eller båda). Dessa metoder kallas överbelastade metoder och den här funktionen kallas metodöverbelastning. Till exempel:

 void func () (…) void func (int a) (…) float func (double a) (…) float func (int a, float b) (…)

Här är func()metoden överbelastad. Dessa metoder har samma namn men accepterar olika argument.

Obs : Returtyperna för ovanstående metoder är inte desamma. Det beror på att metodöverbelastning inte är associerad med returtyper. Överbelastade metoder kan ha samma eller olika returtyper, men de måste skilja sig åt i parametrar.

Varför metodöverbelastning?

Antag att du måste utföra tillägget av givna nummer men det kan finnas valfritt antal argument (låt oss säga antingen 2 eller 3 argument för enkelhetens skull).

För att utföra uppgiften kan du skapa två metoder sum2num(int, int)och sum3num(int, int, int)för två respektive tre parametrar. Men andra programmerare, liksom du i framtiden, kan bli förvirrade eftersom båda metodernas beteende är desamma men de skiljer sig åt efter namn.

Det bättre sättet att utföra denna uppgift är genom överbelastningsmetoder. Och beroende på argumentet som skickas kallas en av de överbelastade metoderna. Detta hjälper till att öka programmets läsbarhet.

Hur utför man metodöverbelastning i Java?

Här är olika sätt att utföra överbelastning av metoder:

1. Överbelastning genom att ändra antalet argument

 class MethodOverloading ( private static void display(int a)( System.out.println("Arguments: " + a); ) private static void display(int a, int b)( System.out.println("Arguments: " + a + " and " + b); ) public static void main(String() args) ( display(1); display(1, 4); ) )

Utgång :

 Argument: 1 Argument: 1 och 4

2. Genom att ändra datatypen för parametrar

 class MethodOverloading ( // this method accepts int private static void display(int a)( System.out.println("Got Integer data."); ) // this method accepts String object private static void display(String a)( System.out.println("Got String object."); ) public static void main(String() args) ( display(1); display("Hello"); ) ) 

Utgång :

Har heltalsdata. Fick strängobjekt.

Här accepterar båda överbelastade metoderna ett argument. Man accepterar dock argumentets typ intmedan andra accepterar Stringobjekt.

Låt oss titta på ett verkligt exempel:

 class HelperService ( private String formatNumber(int value) ( return String.format("%d", value); ) private String formatNumber(double value) ( return String.format("%.3f", value); ) private String formatNumber(String value) ( return String.format("%.2f", Double.parseDouble(value)); ) public static void main(String() args) ( HelperService hs = new HelperService(); System.out.println(hs.formatNumber(500)); System.out.println(hs.formatNumber(89.9934)); System.out.println(hs.formatNumber("550")); ) )

När du kör programmet blir resultatet:

 500 89,993 550,00

Obs! I Java kan du också överbelasta konstruktörer på liknande sätt som metoder.

Rekommenderad läsning: Java Constructor Overloading

Viktiga punkter

  • Två eller flera metoder kan ha samma namn i samma klass om de accepterar olika argument. Denna funktion kallas metodöverbelastning.
  • Metodöverbelastning uppnås genom antingen:
    • ändra antalet argument.
    • eller ändra datatypen för argument.
  • Det är inte metodöverbelastning om vi bara ändrar returtypen av metoder. Det måste finnas skillnader i antalet parametrar.

Intressanta artiklar...