logo

Rakentajat Javassa

  1. Rakentajien tyypit
    1. Oletuskonstruktori
    2. Parametrisoitu rakentaja
  2. Rakentajan ylikuormitus
  3. Palauttaako rakentaja mitään arvoa?
  4. Objektin arvojen kopioiminen toiseen
  5. Suorittaako rakentaja muita tehtäviä alustuksen sijaan

Sisään Java , konstruktori on menetelmän kaltainen koodilohko. Sitä kutsutaan, kun esiintymä luokkaa on luotu. Konstruktoria kutsuttaessa objektille varataan muistia muistiin.

Se on erityinen menetelmä, jota käytetään objektin alustamiseen.

Joka kerta kun objekti luodaan käyttämällä new()-avainsanaa, kutsutaan vähintään yhtä konstruktoria.

Se kutsuu oletuskonstruktoria, jos luokassa ei ole saatavilla konstruktoria. Siinä tapauksessa Java-kääntäjä tarjoaa oletusarvoisen rakentajan.

Javalla on kahdenlaisia ​​rakentajia: no-arg-konstruktori ja parametroitu konstruktori.

Huomautus: Sitä kutsutaan konstruktoriksi, koska se muodostaa arvot objektin luomishetkellä. Luokkalle ei tarvitse kirjoittaa konstruktoria. Tämä johtuu siitä, että java-kääntäjä luo oletuskonstruktorin, jos luokallasi ei ole sellaista.

Säännöt Java-konstruktorin luomiseen

Rakentajalle on määritelty kaksi sääntöä.

apple emojit Androidissa
  1. Rakentajan nimen on oltava sama kuin sen luokan nimen
  2. Rakentajalla ei saa olla selkeää palautustyyppiä
  3. Java-konstruktori ei voi olla abstrakti, staattinen, lopullinen ja synkronoitu

Huomaa: Voimme käyttää pääsyn muokkaajat julistaessaan rakentajaksi. Se ohjaa objektin luomista. Toisin sanoen meillä voi olla yksityinen, suojattu, julkinen tai oletuskonstruktori Javassa.

Java-konstruktorien tyypit

Javalla on kahdenlaisia ​​rakentajia:

  1. Oletuskonstruktori (no-arg konstruktori)
  2. Parametrisoitu rakentaja
Java-konstruktorit

Java-oletuskonstruktori

Konstruktoria kutsutaan oletuskonstruktoriksi, kun sillä ei ole parametreja.

Oletuskonstruktorin syntaksi:

 (){} 

Esimerkki oletuskonstruktorista

Tässä esimerkissä luomme no-arg-konstruktorin Bike-luokassa. Sitä kutsutaan objektin luomisen yhteydessä.
 //Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } } 
Testaa nyt

Lähtö:

 Bike is created 

Sääntö: Jos luokassa ei ole rakentajaa, kääntäjä luo automaattisesti oletuskonstruktorin.

Java oletuskonstruktori

K) Mikä on oletuskonstruktorin tarkoitus?

Oletuskonstruktoria käytetään antamaan objektille oletusarvot, kuten 0, null jne. tyypistä riippuen.

Esimerkki oletuskonstruktorista, joka näyttää oletusarvot

 //Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } } 
Testaa nyt

Lähtö:

 0 null 0 null 

Selitys: Yllä olevassa luokassa et luo rakentajaa, joten kääntäjä tarjoaa sinulle oletuskonstruktorin. Tässä oletuskonstruktori tarjoaa 0- ja nolla-arvot.


Java-parametrisoitu konstruktori

Konstruktoria, jolla on tietty määrä parametreja, kutsutaan parametroiduksi konstruktoriksi.

Miksi käyttää parametroitua konstruktoria?

Parametrisoitua konstruktoria käytetään antamaan eri arvot erillisille objekteille. Voit kuitenkin antaa myös samat arvot.

Esimerkki parametroidusta konstruktorista

Tässä esimerkissä olemme luoneet Student-luokan konstruktorin, jolla on kaksi parametria. Konstruktorissa voi olla mikä tahansa määrä parametreja.

 //Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } } 
Testaa nyt

Lähtö:

 111 Karan 222 Aryan 

Rakentajan ylikuormitus Javassa

Javalla konstruktori on aivan kuin metodi, mutta ilman palautustyyppiä. Se voidaan myös ylikuormittaa kuten Java-menetelmät.

Rakentaja ylikuormitus Javassa on tekniikka, jossa on useampi kuin yksi konstruktori erilaisilla parametriluetteloilla. Ne on järjestetty siten, että jokainen rakentaja suorittaa oman tehtävänsä. Kääntäjä erottaa ne luettelossa olevien parametrien lukumäärän ja niiden tyypin mukaan.

Esimerkki rakentajan ylikuormituksesta

 //Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } } 
Testaa nyt

Lähtö:

 111 Karan 0 222 Aryan 25 

Ero konstruktorin ja metodin välillä Javassa

Rakentajien ja menetelmien välillä on monia eroja. Ne on annettu alla.

Java-konstruktoriJava-menetelmä
Konstruktoria käytetään objektin tilan alustamiseen.Menetelmää käytetään paljastamaan kohteen käyttäytyminen.
Rakentajalla ei saa olla palautustyyppiä.Metodilla on oltava palautustyyppi.
Rakentajaa kutsutaan implisiittisesti.Menetelmää kutsutaan eksplisiittisesti.
Java-kääntäjä tarjoaa oletusmuodostajan, jos luokassa ei ole rakentajaa.Kääntäjä ei missään tapauksessa tarjoa menetelmää.
Rakentajan nimen on oltava sama kuin luokan nimen.Metodin nimi voi olla sama kuin luokan nimi.

Java-konstruktorit vs. menetelmät

Java Copy Constructor

Javassa ei ole kopiokonstruktoria. Voimme kuitenkin kopioida arvot objektista toiseen, kuten kopioida konstruktori C++:ssa.

On monia tapoja kopioida objektin arvot toiseen Javassa. He ovat:

  • Rakentajan toimesta
  • Määrittämällä yhden objektin arvot toiselle
  • Object-luokan clone()-metodilla

Tässä esimerkissä aiomme kopioida yhden objektin arvot toiseen Java-konstruktorin avulla.

turbo c++ lataus
 //Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Testaa nyt

Lähtö:

 111 Karan 111 Karan 

Kopioidaan arvoja ilman konstruktoria

Voimme kopioida yhden objektin arvot toiseen määrittämällä objektien arvot toiselle objektille. Tässä tapauksessa rakentajaa ei tarvitse luoda.

 class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } } 
Testaa nyt

Lähtö:

 111 Karan 111 Karan 

K) Palauttaako konstruktori mitään arvoa?

Kyllä, se on nykyinen luokan esiintymä (et voi käyttää palautustyyppiä, mutta se palauttaa arvon).


Voiko rakentaja suorittaa muita tehtäviä alustuksen sijaan?

Kyllä, kuten objektin luominen, säikeen aloittaminen, metodin kutsuminen jne. Voit suorittaa minkä tahansa toiminnon rakentajassa samalla tavalla kuin metodissa.


Onko Javassa Constructor-luokkaa?

Joo.


Mikä on Constructor-luokan tarkoitus?

Java tarjoaa Constructor-luokan, jonka avulla voidaan saada luokassa olevan rakentajan sisäiset tiedot. Se löytyy java.lang.reflect-paketista.