- Rakentajien tyypit
- Rakentajan ylikuormitus
- Palauttaako rakentaja mitään arvoa?
- Objektin arvojen kopioiminen toiseen
- 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
- Rakentajan nimen on oltava sama kuin sen luokan nimen
- Rakentajalla ei saa olla selkeää palautustyyppiä
- 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:
- Oletuskonstruktori (no-arg konstruktori)
- Parametrisoitu rakentaja
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.
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-konstruktori | Java-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 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.