Preopterećenje konstruktora u Javi: Što je & Primjeri programa

Sadržaj:

Anonim

Što je konstruktor u Javi?

CONSTRUCTOR je posebna metoda koja se koristi za inicijalizaciju novostvorenog objekta i poziva se neposredno nakon što se memorija dodijeli za objekt. Može se koristiti za inicijalizaciju objekata na željene vrijednosti ili zadane vrijednosti u vrijeme stvaranja objekta. Za koder nije obavezno pisanje konstruktora za klasu.

Ako za klasu nije predviđen korisnički definiran konstruktor, kompajler inicijalizira članske varijable na svoje zadane vrijednosti.

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

U ovom vodiču naučit ćete-

  • Pravila za izradu konstruktora
  • Preopterećenje konstruktora u Javi
  • Lanac konstruktora

Pravila za stvaranje Java konstruktora

  1. Ima isto ime kao i razred
  2. Ne bi trebao vratiti vrijednost koja nije ni void

Primjer 1 : Stvorite svoj prvi konstruktor na Javi

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

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 u Javi i promatrajte izlaz.

Izlaz:

Inside ConstructorValue1 === 10Value2 === 20

Preopterećenje konstruktora u Javi

Preopterećenje Java Construktora je tehnika u kojoj klasa može imati bilo koji broj konstruktora koji se razlikuju u popisu parametara. Prevoditelj razlikuje te konstruktore uzimajući u obzir broj parametara na popisu i njihov tip.

Primjeri valjanih konstruktora za klasu Account su

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

Primjer 2 : Razumijevanje preopterećenja konstruktora u Javi

Korak 1) Upišite kôd u editor.

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, prevedite i pokrenite kôd.

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

Korak 4) Svaka klasa ima zadani konstruktor na Javi. Zadani preopterećeni konstruktor Java za klasu Demo je Demo () . U slučaju da ne navedete ovaj konstruktor, kompajler ga kreira za vas i inicijalizira varijable na zadane vrijednosti. Možete odlučiti nadjačati ovaj zadani konstruktor i inicijalizirati varijable na vaše ž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 je da ga navedete.

Drugim riječima, u slučaju da je vaš konstruktor za preopterećenje u Javi nadjačan, a vi želite koristiti zadani konstruktor Java, potrebno je navesti njegov.

Korak 5) Komentirajte red # 4-8. Spremite, prevedite i pokrenite kôd.

Lanac konstruktora

Razmotrimo scenarij u kojem osnovnu klasu proširuje dijete. Kad god se stvori objekt podređene klase, prvo se poziva konstruktor roditeljske klase. To se naziva lanac konstruktora.

Primjer 3: Razumijevanje lanca 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 lancu konstruktora, kada se kreira objekt podređene klase DemoChild, prvo se poziva konstruktor Demo () roditeljske klase, a kasnije se kreira konstruktor DemoChild () djeteta. Očekivani izlaz =

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

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

U takvim slučajevima možete upotrijebiti ključnu riječ "super" za pozivanje nadjačanih konstruktora roditeljske klase.

Sintaksa:-

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

Primjer: Ako je vaš konstruktor poput Demo (Naziv niza, int a) , odredit ćete super ("Java", 5) Ako se koristi, ključna riječ super mora biti prvi redak koda u konstruktoru podređene klase.

Korak 4) Otkomentirajte redak # 26 i pokrenite kôd. Promatrajte izlaz.

Izlaz:

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