Ebben a cikkben megismerheti a módszerek túlterhelését és azt, hogy miként érheti el azt a Java-ban példák segítségével.
A Java-ban két vagy több metódusnak ugyanaz lehet a neve, ha paramétereikben különböznek (eltérő számú paraméter, különböző típusú paraméterek vagy mindkettő). Ezeket a módszereket túlterhelt metódusoknak, ezt a funkciót pedig metódustúlterhelésnek nevezzük. Például:
void func () (…) void func (int a) (…) float func (double a) (…) float func (int a, float b) (…)
Itt a func()
módszer túlterhelt. Ezeknek a módszereknek ugyanaz a neve, de különböző érveket fogadnak el.
Megjegyzés : A fenti módszerek visszatérési típusai nem azonosak. Ennek oka, hogy a módszer túlterhelése nincs társítva visszatérési típusokkal. A túlterhelt módszerek azonos vagy különböző visszatérési típusokkal rendelkezhetnek, de paramétereikben különbözniük kell.
Miért módszer túlterhelés?
Tegyük fel, hogy el kell végeznie a megadott számok hozzáadását, de tetszőleges számú argumentum lehet (mondjuk az egyszerűség kedvéért 2 vagy 3 érvet).
A feladat végrehajtásához két módszert hozhat létre, sum2num(int, int)
illetve sum3num(int, int, int)
két, illetve három paraméterhez. Ugyanakkor más programozók, valamint Ön a jövőben is összezavarodhatnak, mivel mindkét módszer viselkedése azonos, de név szerint eltér egymástól.
A feladat végrehajtásának jobb módja a módszerek túlterhelése. És az átadott argumentumtól függően az egyik túlterhelt metódust hívják meg. Ez hozzájárul a program olvashatóságának növeléséhez.
Hogyan lehet végrehajtani a módszer túlterhelését a Java-ban?
A módszer túlterhelésének különböző módjai vannak:
1. Túlterhelés az argumentumok számának megváltoztatásával
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); ) )
Kimenet :
Érvek: 1 Érvek: 1 és 4
2. A paraméterek adattípusának megváltoztatásával
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"); ) )
Kimenet :
Egész számadatokat kaptam. Megvan a String objektum.
Itt mindkét túlterhelt módszer elfogad egy argumentumot. Az egyik azonban elfogadja a típus argumentumát, int
míg a másik az String
objektumot.
Nézzünk meg egy valós példát:
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")); ) )
A program futtatásakor a kimenet a következő lesz:
500 89,993 550,00
Megjegyzés : A Java-ban a konstruktorokat is hasonló módon túlterhelheti, mint például a módszereket.
Ajánlott olvasmány: Java Constructor Overloading
Fontos szempontok
- Két vagy több metódusnak ugyanaz a neve lehet ugyanazon osztályon belül, ha különböző argumentumokat fogadnak el. Ez a szolgáltatás úgynevezett módszer túlterhelés.
- A módszer túlterhelését a következők egyikével lehet elérni:
- az argumentumok számának megváltoztatása.
- vagy az argumentumok adattípusának megváltoztatása.
- Nem a módszer túlterhelése, ha csak a metódusok visszatérési típusát változtatjuk meg. A paraméterek számában különbségeknek kell lennie.