Java >> Java tutorial >  >> Java

Java-overbelastning | Metode overbelastning | Eksempler

Java-overbelastning definerer to eller flere metoder med samme navn. Men Metodeoverbelastning i Java har det samme navn med et andet antal parametre, forskellige typer parametre eller begge dele.

Metodeoverbelastning falder ind under Polymorphism OOPs Concept. Og det kaldes også kompileringstids (eller statisk) polymorfi.

Syntaks

Syntaksen for at ændre antallet af argumenter/parametre i metodeoverbelastning.

int add_method(int, int)
int add_method(int, int, int)

Java-metode overbelaster syntaks ved at ændre datatyper.

Forskellige måder at overbelaste metoden på

  • Ændring af antallet af argumenter/parametre
  • Ændring af datatypen

Bemærk :At opnå metoder kan overbelastning i java også gøre ved at ændre både – parametre og datatyper.

Eksempel på overbelastning af Java-metode

Når vi taler om Java Overdoing, betyder det en metodeoverbelastning i Java. Her er vi ved at skrive et program med java metode overbelastning eksempel.

Metode Overbelastning med ændring af argumenter

Lad os lave metoder til at tilføje tal (heltalsværdi), der er 2 metoder med samme navn. En vil tilføje 2 numre, og en anden vil tilføje 3 numre. Så videregivelse af data med forskellige antal argumenter registreres automatisk af java-kompileren.

For eksempel ved at definere en statisk metode fordi hovedmetoden er statisk og kan ikke få adgang til ikke-statiske metoder.

public class MethodOverloading {
    static int add(int a, int b) {
        return a + b;
    }

    static int add(int a, int b, int c) {
        return a + b + c;
    }
    public static void main(String[] args) {
        System.out.println(MethodOverloading.add(2, 16));
        System.out.println(MethodOverloading.add(78, 1, 9));
    }
}

Output: 18
88

Metodeoverbelastning:ændring af datatypen for argumenter

Ovenstående eksempel var kun baseret på ændring af antallet af argumenter (parametre), se nu, hvordan man laver overbelastning i metoder ved at ændre en datatype i Java.

I eksemplet skal vi 2 metoder først er med heltal og den anden er til dobbelt tal tilføjelse metoder.

public class MethodOverloading {
    static int add(int a, int b) {
        return a + b;
    }

    static double add(double a, double b) {
        return a + b;
    }
    public static void main(String[] args) {
        System.out.println(MethodOverloading.add(2, 16));
        System.out.println(MethodOverloading.add(78.9, 1.9));
    }
}

Output: 18

80,80000000000001

Overbelastning af konstruktør

Du kan lave Constructor overloading i Java, på samme måde som brugt i metodeoverloading. Den overbelastede konstruktør kaldes eller vælges baseret på, når du opretter et objekt, med det nye søgeord specificeret.

Se eksempel på konstruktøroverbelastning nedenfor.

public class ConstructorOverloading {

    //default Constructor
    public ConstructorOverloading() {
        System.out.println("Default Constructor");
    }

    //Constructor Overloading
    public ConstructorOverloading(String r) {
        System.out.println(r);
    }

    //Constructor Overloading
    public ConstructorOverloading(int r1, int r2) {
        System.out.println(r1 + r2);
    }

    public static void main(String arg[]) {
        ConstructorOverloading co = new ConstructorOverloading();

        ConstructorOverloading co1 = new ConstructorOverloading("Constructor Overloading");

        ConstructorOverloading co2 = new ConstructorOverloading(1, 6);
    }
}

Output: Standard konstruktør
Overbelastning af konstruktør
7

Java-overbelastningsoperatører

Java tillader ikke operatøroverbelastning. Den foretrukne tilgang er at definere en metode i din klasse til at udføre handlingen:a.add(b) i stedet for a + b .

Tjek regler for metodeoverbelastning i java :

  • Alle metoders navne skal være de samme.
  • Hvis argument/parametre overbelastes, bør parametrene være anderledes.
  • Kun med forskellige returtyper af metoder kan man ikke opnå overbelastning af metoder.

Sp:Hvorfor metodeoverbelastning ikke er mulig ved kun at ændre metoden returtypen?

Svar: Kun at ændre en returdatatype i Java-metodeoverbelastning er ikke muligt på grund af data-uklarhed.

Lad os prøve et eksempel på overbelastning med samme metodenavn, argumenter men forskellige returtyper. Det vil helt sikkert vise en kompileringstidsfejl.

public class MethodOverloading {
    static int add(int a, int b) {
        return a + b;
    }

    static double add(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        System.out.println(MethodOverloading.add(2, 16));
        System.out.println(MethodOverloading.add(78, 1));
    }
}

Skærmbillede af fejl: Error:(6, 19) java: metode add(int,int) er allerede defineret i klassen MethodOverloading

Sp:Kan vi overbelaste javas main()-metode? [Meget vigtigt spørgsmål)

Svar:Ja, det er muligt, så mange gange du vil, kan gøre overbelastning på Java Main()-metoder.

Hvilken hovedmetode vil nu kalde?

JVM vil kun kalde en main() metode, som kun har string array som argumenter. Se på nedenstående eksempel.

public class MethodOverloading {
    public static void main(String[] args) {
        System.out.println("main with String[] Array");
    }

    public static void main(String args) {
        System.out.println("Overloading main with String");
    }

    public static void main() {
        System.out.println("Overloading main without args");
    }
}

Output: main med String[] Array

Sp:Hvorfor metodeoverbelastning?

Svar: Nogle anvendelser og fordele ved metodeoverbelastning i java. Let at huske – Det er ikke nødvendigt at oprette flere metoder med forskellige for at udføre den samme operation.

Eller i dette tilfælde, hvis dine metoder er opdateret til en ny applikation, kan du den gang oprette den med samme navn. De gamle metoder understøtter en ældre version af applikationen og en ny til en ny applikation under samme navn. (Metodeversion)

Sidebemærkning: På grund af overbelastning bruger man på metoder, derfor kaldes det også Metode overbelastning i Java.


Java tag