Přetížení metody Java (s příklady)

V tomto článku se dozvíte o přetížení metod a o tom, jak toho dosáhnout v Javě pomocí příkladů.

V Javě mohou mít dvě nebo více metod stejný název, pokud se liší v parametrech (odlišný počet parametrů, různé typy parametrů nebo obojí). Tyto metody se nazývají přetížené metody a tato funkce se nazývá přetížení metody. Například:

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

Zde je func()metoda přetížená. Tyto metody mají stejný název, ale přijímají různé argumenty.

Poznámka : Návratové typy výše uvedených metod nejsou stejné. Je to proto, že přetížení metody není spojeno s návratovými typy. Přetížené metody mohou mít stejné nebo různé typy návratů, ale musí se lišit v parametrech.

Proč přetížení metody?

Předpokládejme, že musíte provést sčítání daných čísel, ale může existovat libovolný počet argumentů (pro jednoduchost řekněme 2 nebo 3 argumenty).

Chcete-li splnit úkol, můžete vytvořit dvě metody sum2num(int, int)a sum3num(int, int, int)pro dva a tři parametry. Jiní programátoři i vy v budoucnu se však mohou zmást, protože chování obou metod je stejné, liší se však podle názvu.

Lepší způsob, jak dosáhnout tohoto úkolu, je přetížení metod. A v závislosti na předaném argumentu se volá jedna z přetížených metod. To pomáhá zvýšit čitelnost programu.

Jak provést přetížení metody v Javě?

Zde jsou různé způsoby, jak provést přetížení metody:

1. Přetížení změnou počtu 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); ) )

Výstup :

 Argumenty: 1 Argumenty: 1 a 4

2. Změnou datového typu parametrů

 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"); ) ) 

Výstup :

Mám celočíselná data. Mám řetězec objekt.

Zde obě přetížené metody přijímají jeden argument. Jeden však přijímá argument typu, intzatímco druhý přijímá Stringobjekt.

Podívejme se na příklad ze skutečného světa:

 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")); ) )

Když spustíte program, výstup bude:

 500 89,993 550,00

Poznámka : V Javě můžete také přetížit konstruktory podobným způsobem jako metody.

Doporučené čtení: Přetížení Java Constructor

Důležité body

  • Dvě nebo více metod může mít stejný název uvnitř stejné třídy, pokud přijímají různé argumenty. Tato funkce se nazývá přetížení metody.
  • Přetížení metody je dosaženo buď:
    • změna počtu argumentů.
    • nebo změna datového typu argumentů.
  • Není to přetížení metody, pokud změníme pouze návratový typ metod. Musí existovat rozdíly v počtu parametrů.

Zajímavé články...