Preopterećenje konstruktora u Java

U čemu se preopterećenje konstruktora Java?

Java Preopterećenje konstruktora je tehnika u kojoj klasa može imati bilo koji broj konstruktora koji se razlikuju u popisu parametara. Prevodilac razlikuje ove konstruktore uzimajući u obzir broj parametara na popisu i njihovu vrstu.

Primjeri valjanih konstruktora za klasu Account su

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

Primjer 2: Za razumijevanje preopterećenja konstruktora u Java

Korak 1) Upišite kod u uređivač.

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();
 }
}

Korak 2) Spremite, kompajlirajte i pokrenite kod.

Korak 3) Greška = ?. Pokušajte otkloniti pogrešku prije nego što prijeđete na sljedeći korak Java preopterećenje konstruktora

Korak 4) Svaka klasa ima zadanu vrijednost Konstruktor u Java. Zadani preopterećeni konstruktor Java za klasa Demo is Demo(). U slučaju da ne osigurate ovaj konstruktor, kompajler ga stvara za vas i inicijalizira varijable na zadane vrijednosti. Možete odlučiti nadjačati ovaj zadani konstruktor i inicijalizirati varijable na željene vrijednosti kao što je prikazano u primjeru 1.

Ali ako navedete parametrizirani konstruktor poput Demo(int a) i želite koristiti zadani konstruktor Java Demo(), obavezno ga navedite.

Drugim riječima, u slučaju da vaš konstruktor preopterećenja u Java je nadjačan, a vi želite koristiti zadani konstruktor Java, potrebno ga je specificirati.

Korak 5) Odkomentirajte redak # 4-8. Spremite, prevedite i pokrenite kod.

Zašto nam je potrebno preopterećenje konstruktora Java?

Preopterećenje konstruktora u Java dopušta više konstruktora u klasi, od kojih svaki ima različite liste parametara. Povećava fleksibilnost i poboljšava učinkovitost koda.

  • Fleksibilnost u stvaranju objekata: Preopterećenje konstruktora omogućuje vam da inicijalizirate objekte na različite načine, ovisno o broju ili vrsti parametara.
  • Mogućnost ponovne upotrebe koda: Logiku konstruktora možete ponovno koristiti pozivanjem jednog konstruktora iz drugog pomoću ključne riječi this().
  • Poboljšana čitljivost: Preopterećeni konstruktori čine kod intuitivnijim nudeći specifične opcije konstruktora za različite potrebe inicijalizacije.
  • Zadana i prilagođena inicijalizacija: Preopterećenje konstruktora omogućuje vam jednostavno stvaranje zadanih i prilagođenih inicijaliziranih objekata.

Pitanja i odgovori

Konstruktor je posebna metoda koja se koristi za inicijalizaciju novostvorenog objekta i poziva se odmah nakon što je memorija dodijeljena objektu. Može se koristiti za inicijaliziranje objekata na željene vrijednosti ili zadane vrijednosti u vrijeme stvaranja objekta. Nije obavezno da koder napiše konstruktor za klasu.

Ako za klasu nije osiguran korisnički definiran konstruktor, prevodilac inicijalizira članske varijable na zadane vrijednosti.

  • numerički tipovi podataka postavljeni su na 0
  • tipovi podataka char postavljeni su na nulti znak ('\0')
  • referentne varijable su postavljene na null

  1. Ima ono isto ime kao klasa
  2. Čak ne bi trebao vraćati vrijednost poništiti

Primjer 1: Izradite svoj prvi konstruktor u Java

Korak 1) Upišite sljedeći program konstruktora Java urednik.

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();
  }
}

Korak 2) Spremite, pokrenite i kompajlirajte program konstruktora Java i promatrati izlaz.

Očekivani rezultat:

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

Razmotrite scenarij u kojem osnovnu klasu proširuje dijete. Kad god se kreira objekt podređene klase, prvo se poziva konstruktor roditeljske klase. Ovo se zove Ulančavanje konstruktora.

Primjer 3: Za razumijevanje ulančavanja konstruktora

Korak 1) Kopirajte sljedeći kod u editor.

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

Korak 2) Pokrenite kod. Zahvaljujući ulančavanju konstruktora, kada se kreira objekt podređene klase DemoChild, prvo se poziva konstruktor Demo() roditeljske klase, a kasnije se kreira konstruktor DemoChild() podređene klase.

Očekivani rezultat:

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

Korak 3) Možete primijetiti da je konstruktor nadređene klase Demo nadjačan. Što ako želite pozvati nadjačani konstruktor Demo(int a) umjesto zadanog konstruktora Demo() kada se kreira vaš podređeni objekt?

U takvim slučajevima možete koristiti ključnu riječ "super" za pozivanje nadjačanih konstruktora nadređene klase.

Sintaksa:-

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

Primjer: Ako je vaš konstruktor kao Demo (naziv niza, int a), precizirat ćete super("Java”,5). Ako se koristi, ključna riječ super mora biti prva linija koda u konstruktoru klase dijete.

Korak 4) Odkomentirajte redak # 26 i pokrenite kod. Promatrajte izlaz.

Izlaz:

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