A kivitelező túlterhelése Java

Mi a konstruktor túlterhelése Java?

Java A konstruktor túlterhelés egy olyan technika, amelyben egy osztálynak tetszőleges számú konstruktora lehet, amelyek paraméterlistában különböznek egymástól. A fordító ezeket a konstruktorokat a listában szereplő paraméterek számának és típusának figyelembevételével különbözteti meg.

Példák a Fiók osztály érvényes konstruktoraira:

Account(int a);
Account (int a,int b);
Account (String a,int b);

Példa 2: A Constructor Overloading megértéséhez Java

Step 1) Írja be a kódot a szerkesztőbe.

class Demo{
      int  value1;
      int  value2;
      /*Demo(){
       value1 = 10;
       value2 = 20;
       System.out.println("Inside 1st Constructor");
     }*/
     Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Constructor");
    }
    Demo(int a,int b){
    value1 = a;
    value2 = b;
    System.out.println("Inside 3rd Constructor");
   }
   public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
    Demo d1 = new Demo();
    Demo d2 = new Demo(30);
    Demo d3 = new Demo(30,40);
    d1.display();
    d2.display();
    d3.display();
 }
}

Step 2) Mentse, fordítsa le és futtassa a kódot.

Step 3) Hiba =?. Próbálja meg kijavítani a hibát, mielőtt továbblépne a következő lépésre Java konstruktor túlterhelés

Step 4) Minden osztálynak van alapértelmezett értéke Konstruktor be Java. Alapértelmezett túlterhelt konstruktor Java mert osztályú Demo is Demó(). Abban az esetben, ha nem adja meg ezt a konstruktort, a fordító létrehozza azt, és az alapértelmezett értékekre inicializálja a változókat. Dönthet úgy, hogy felülbírálja ezt az alapértelmezett konstruktort, és inicializálja a változókat a kívánt értékekre az 1. példában látható módon.

De ha megad egy paraméterezett konstruktort, mint például a Demo(int a), és az alapértelmezett konstruktort szeretné használni Java Demo(), kötelező megadni.

Más szóval, abban az esetben, ha túlterheli a konstruktort Java felül van írva, és az alapértelmezett konstruktort szeretné használni Java, pontosítani kell.

Step 5) Megjegyzés: 4-8. sor. Mentse, fordítsa le és futtassa a kódot.

Miért van szükségünk Constructor Overloadingra? Java?

A kivitelező túlterhelése Java több konstruktőrt tesz lehetővé egy osztályban, mindegyiknek más paraméterlistája van. Növeli a rugalmasságot és javítja a kód hatékonyságát.

  • Rugalmasság az objektumok létrehozásában: A konstruktor túlterhelése lehetővé teszi az objektumok különböző módokon történő inicializálását, a paraméterek számától vagy típusától függően.
  • A kód újrafelhasználhatósága: A konstruktor logikáját újra felhasználhatja, ha meghív egy konstruktort egy másikból a this() kulcsszó használatával.
  • Továbbfejlesztett olvashatóság: A túlterhelt konstruktorok segítenek a kód intuitívabbá tételében azáltal, hogy specifikus konstruktor opciókat kínálnak a különböző inicializálási igényekhez.
  • Alapértelmezett és egyéni inicializálás: A konstruktor túlterhelése lehetővé teszi az alapértelmezett és egyedi inicializált objektumok egyszerű létrehozását.

GYIK

építész egy speciális módszer, amelyet egy újonnan létrehozott objektum inicializálására használnak, és közvetlenül azután hívják meg, hogy a memória le van foglalva az objektum számára. Használható az objektumok inicializálására a kívánt értékekre vagy alapértelmezett értékekre az objektum létrehozásakor. A kódolónak nem kötelező konstruktort írnia egy osztályhoz.

Ha egy osztályhoz nincs felhasználó által definiált konstruktor, a fordító az alapértelmezett értékekre inicializálja a tagváltozókat.

  • a numerikus adattípusok 0-ra vannak állítva
  • A char adattípusok null karakterre vannak állítva ('\0')
  • a referenciaváltozók nullára vannak állítva

  1. Megvan a ugyanaz a név mint az osztály
  2. Nem szabad visszaadnia egy értéket sem semmisnek

Példa 1: Hozd létre az első konstruktorodat Java

Step 1) Írja be a következő konstruktor programot Java szerkesztő.

class Demo{
      int  value1;
      int  value2;
      Demo(){
         value1 = 10;
         value2 = 20;
         System.out.println("Inside Constructor");
     }
 
     public void display(){
        System.out.println("Value1 === "+value1);
        System.out.println("Value2 === "+value2);
    }
 
   public static void main(String args[]){
       Demo d1 = new Demo();
      d1.display();
  }
}

Step 2) Mentse, futtassa és fordítsa le a konstruktor programot Java és figyelje meg a kimenetet.

Várható teljesítmény:

Inside Constructor
Value1 === 10
Value2 === 20

Tekintsünk egy olyan forgatókönyvet, amelyben az alaposztályt egy gyermek bővíti ki. A gyermekosztály objektumának létrehozásakor először a szülőosztály konstruktora kerül meghívásra. Ezt nevezik Konstruktor láncolás.

Példa 3: A konstruktorok láncolásának megértéséhez

Step 1) Másolja be a következő kódot a szerkesztőbe.

class Demo{
   int  value1;
   int  value2;
    Demo(){
      value1 = 1;
      value2 = 2;
      System.out.println("Inside 1st Parent Constructor");
   }
   Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Parent Constructor");
   }
  public void display(){
     System.out.println("Value1 === "+value1);
     System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
     DemoChild d1 = new DemoChild();
     d1.display();
  }
}
class DemoChild extends Demo{
    int value3;
    int value4;
    DemoChild(){
    //super(5);
     value3 = 3;
     value4 = 4;
    System.out.println("Inside the Constructor of Child");
    }
    public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
      System.out.println("Value1 === "+value3);
      System.out.println("Value2 === "+value4);
   }
}

Step 2) Futtassa a kódot. A konstruktor láncolás miatt a DemoChild gyermekosztály objektumának létrehozásakor először a szülőosztály Demo() konstruktora, majd később jön létre a gyermek DemoChild() konstruktora.

Várható teljesítmény:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

Step 3) Megfigyelheti, hogy a Demó szülőosztály konstruktora felül van írva. Mi a teendő, ha az utódobjektum létrehozásakor az alapértelmezett Demo() konstruktor helyett a felülírt Demo(int a) konstruktort szeretnéd meghívni?

Ilyen esetekben használhatja a kulcsszót "szuper" a szülőosztály felülírt konstruktorainak meghívásához.

Szintaxis:-

super();
--or--
super(parameter list);

Példa: Ha a kiviteleződ olyan Demo (karakterlánc neve, int a), akkor megadod szuper("Java”,5). Ha használjuk, akkor a kulcsszót A szupernek a kód első sorának kell lennie a gyerekosztály konstruktorában.

Step 4) Törölje a 26. sor megjegyzését, és futtassa a kódot. Figyelje meg a kimenetet.

output:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4