Konstruktori ülekoormus Java

Millises konstruktori ülekoormuses Java?

Java Konstruktorite ülekoormus on tehnika, mille puhul klassis võib olla suvaline arv konstruktoreid, mis erinevad parameetrite loendi poolest. Kompilaator eristab neid konstruktoreid, võttes arvesse loendis olevate parameetrite arvu ja nende tüüpi.

Klassi Konto kehtivate konstruktorite näited on

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

Näiteks 2: Konstruktorite ülekoormuse mõistmiseks Java

Step 1) Tippige kood redaktorisse.

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) Salvestage, kompileerige ja käivitage kood.

Step 3) Viga =?. Enne järgmise sammuga jätkamist proovige viga siluda Java konstruktori ülekoormus

Step 4) Igal klassil on vaikeklass Konstruktor sisse Java. Vaikimisi ülekoormatud konstruktor Java eest klassi demo is Demo(). Kui te seda konstruktorit ei paku, loob kompilaator selle teie eest ja lähtestab muutujad vaikeväärtustele. Võite selle vaikekonstruktori alistada ja initsialiseerida muutujad soovitud väärtustega, nagu on näidatud näites 1.

Aga kui määrate parameetritega konstruktori, näiteks Demo(int a) ja soovite kasutada vaikekonstruktorit Java Demo(), peate selle määrama.

Teisisõnu juhuks, kui teie konstruktor on ülekoormatud Java on alistatud ja soovite kasutada vaikekonstruktorit Java, tuleb see täpsustada.

Step 5) Tühista rida nr 4-8. Salvestage, kompileerige ja käivitage kood.

Miks me vajame konstruktori ülekoormust? Java?

Konstruktori ülekoormus sisse Java võimaldab klassis mitut konstruktorit, millest igaühel on erinevad parameetrite loendid. See suurendab paindlikkust ja parandab koodi tõhusust.

  • Paindlikkus objektide loomisel: Konstruktorite ülekoormus võimaldab objekte erinevatel viisidel lähtestada, olenevalt parameetrite arvust või tüübist.
  • Koodi korduvkasutatavus: Konstruktori loogikat saab taaskasutada, kutsudes ühe teise konstruktori, kasutades märksõna this().
  • Parem loetavus: Ülekoormatud konstruktorid aitavad muuta koodi intuitiivsemaks, pakkudes erinevate lähtestamisvajaduste jaoks spetsiifilisi konstruktorivalikuid.
  • Vaikimisi ja kohandatud lähtestamine: Konstruktorite ülekoormamine võimaldab teil hõlpsalt luua nii vaike- kui ka kohandatud lähtestatud objekte.

KKK

Ehitaja on spetsiaalne meetod, mida kasutatakse vastloodud objekti lähtestamiseks ja mida kutsutakse kohe pärast seda, kui objekti jaoks on mälu eraldatud. Seda saab kasutada objektide lähtestamiseks soovitud väärtustele või vaikeväärtustele objekti loomise ajal. Kodeerijal ei ole klassile konstruktori kirjutamine kohustuslik.

Kui klassi jaoks pole kasutaja määratud konstruktorit, lähtestab kompilaator liikmemuutujad vaikeväärtustele.

  • numbriliste andmetüüpide väärtuseks on määratud 0
  • char andmetüübid on seatud nullimärgile ('\0')
  • võrdlusmuutujad on seatud nulli

  1. Sellel on sama nimega kui klass
  2. See ei tohiks tagastada väärtust isegi mitte tühine

Näiteks 1: looge oma esimene konstruktor Java

Step 1) Sisestage järgmine konstruktoriprogramm Java toimetaja.

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) Salvestage, käivitage ja kompileerige konstruktori programm Java ja jälgige väljundit.

Eeldatav väljund:

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

Mõelge stsenaariumile, kus põhiklassi laiendab laps. Alati, kui luuakse alamklassi objekt, kutsutakse esmalt esile ülemklassi konstruktor. Seda nimetatakse Konstruktori aheldamine.

Näide 3: Et mõista konstruktori aheldamist

Step 1) Kopeerige järgmine kood redaktorisse.

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) Käivitage kood. Konstruktorite aheldamise tõttu kutsutakse alamklassi DemoChild objekti loomisel esmalt esile vanemklassi konstruktor Demo() ja hiljem luuakse alamklassi konstruktor DemoChild().

Eeldatav väljund:

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

Step 3) Võite märgata, et vanemklassi Demo konstruktor on tühistatud. Mida teha, kui soovite oma alamobjekti loomisel kutsuda vaikekonstruktori Demo() asemel tühistatud konstruktorit Demo(int a)?

Sellistel juhtudel võite kasutada märksõna "Super" et kutsuda ülemklassi alistatud konstruktoreid.

Süntaks:-

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

Näide: Kui teie konstruktor on nagu Demo (stringi nimi, int a), täpsustate super ("Java”,5). Kui kasutatakse, siis märksõna super peab olema koodi esimene rida lasteklassi konstruktoris.

Step 4) Tühjendage rida nr 26 ja käivitage kood. Jälgige väljundit.

Väljund:

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