- Konstruktorių tipai
- Konstruktoriaus perkrova
- Ar konstruktorius grąžina kokią nors vertę?
- Vieno objekto reikšmių kopijavimas į kitą
- Ar konstruktorius atlieka kitas užduotis, o ne inicijavimą
Į Java , konstruktorius yra kodų blokas, panašus į metodą. Jis vadinamas, kai atvejis klasė yra sukurtas. Konstruktoriaus iškvietimo metu objekto atmintis yra paskirstoma atmintyje.
Tai specialus metodas, naudojamas inicijuoti objektą.
Kiekvieną kartą, kai objektas sukuriamas naudojant raktinį žodį new(), iškviečiamas bent vienas konstruktorius.
Jis iškviečia numatytąjį konstruktorių, jei klasėje nėra konstruktoriaus. Tokiu atveju Java kompiliatorius pagal numatytuosius nustatymus pateikia numatytąjį konstruktorių.
„Java“ yra dviejų tipų konstruktoriai: no-arg konstruktorius ir parametrizuotas konstruktorius.
Pastaba: Jis vadinamas konstruktoriumi, nes sukuria vertes objekto kūrimo metu. Nebūtina rašyti klasės konstruktoriaus. Taip yra todėl, kad java kompiliatorius sukuria numatytąjį konstruktorių, jei jūsų klasėje jo nėra.
Java konstruktoriaus kūrimo taisyklės
Konstruktoriui nustatytos dvi taisyklės.
Java eilutė palyginimui
- Konstruktoriaus pavadinimas turi būti toks pat kaip jo klasės pavadinimas
- Konstruktorius neturi turėti aiškaus grąžinimo tipo
- „Java“ konstruktorius negali būti abstraktus, statinis, galutinis ir sinchronizuotas
Pastaba: galime naudoti prieigos modifikatoriai deklaruodamas konstruktorių. Jis kontroliuoja objekto kūrimą. Kitaip tariant, galime turėti privatų, apsaugotą, viešą arba numatytąjį „Java“ konstruktorių.
Java konstruktorių tipai
„Java“ yra dviejų tipų konstruktoriai:
- Numatytasis konstruktorius (no-arg konstruktorius)
- Parametrizuotas konstruktorius
„Java“ numatytasis konstruktorius
Konstruktorius vadinamas „Numatytuoju konstruktoriumi“, kai jis neturi jokių parametrų.
Numatytosios konstruktoriaus sintaksė:
(){}
Numatytosios konstruktoriaus pavyzdys
Šiame pavyzdyje mes kuriame dviračių klasėje konstruktorių no-arg. Jis bus iškviestas objekto sukūrimo metu. |
//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(); } }Išbandykite dabar
Išvestis:
Bike is created
Taisyklė: jei klasėje nėra konstruktoriaus, kompiliatorius automatiškai sukuria numatytąjį konstruktorių.
K) Koks yra numatytojo konstruktoriaus tikslas?
Numatytasis konstruktorius naudojamas norint pateikti numatytąsias objekto reikšmes, pvz., 0, nulį ir tt, priklausomai nuo tipo.
Numatytosios konstruktoriaus, rodančio numatytąsias reikšmes, pavyzdys
//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(); } }Išbandykite dabar
Išvestis:
0 null 0 null
Paaiškinimas: Aukščiau pateiktoje klasėje jūs nekuriate jokio konstruktoriaus, todėl kompiliatorius pateikia numatytąjį konstruktorių. Čia 0 ir nulinės reikšmės pateikiamos numatytojo konstruktoriaus.
Java parametrizuotas konstruktorius
Konstruktorius, turintis tam tikrą parametrų skaičių, vadinamas parametrizuotu konstruktoriumi.
Kodėl verta naudoti parametrinį konstruktorių?
Parametras konstruktorius naudojamas norint pateikti skirtingas reikšmes skirtingiems objektams. Tačiau taip pat galite pateikti tas pačias vertes.
Parametrizuoto konstruktoriaus pavyzdys
Šiame pavyzdyje sukūrėme studentų klasės konstruktorių, turintį du parametrus. Konstruktoriumi galime turėti bet kokį parametrų skaičių.
//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(); } }Išbandykite dabar
Išvestis:
111 Karan 222 Aryan
Konstruktorių perkrova Java
Java programoje konstruktorius yra kaip metodas, bet be grąžinimo tipo. Jis taip pat gali būti perkrautas kaip Java metodai.
Konstruktorius perkrova Java yra būdas turėti daugiau nei vieną konstruktorių su skirtingais parametrų sąrašais. Jie išdėstyti taip, kad kiekvienas konstruktorius atliktų skirtingą užduotį. Kompiliatorius juos išskiria pagal sąraše esančių parametrų skaičių ir jų tipus.
Konstruktoriaus perkrovos pavyzdys
//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(); } }Išbandykite dabar
Išvestis:
111 Karan 0 222 Aryan 25
„Java“ konstruktoriaus ir metodo skirtumas
Yra daug skirtumų tarp konstruktorių ir metodų. Jie pateikiami žemiau.
Java konstruktorius | Java metodas |
---|---|
Konstruktorius naudojamas objekto būsenai inicijuoti. | Objekto elgsenai atskleisti naudojamas metodas. |
Konstruktorius neturi turėti grąžinimo tipo. | Metodas turi turėti grąžinimo tipą. |
Konstruktorius iškviečiamas netiesiogiai. | Metodas yra aiškiai nurodytas. |
„Java“ kompiliatorius pateikia numatytąjį konstruktorių, jei klasėje neturite konstruktoriaus. | Metodo jokiu būdu nepateikia kompiliatorius. |
Konstruktoriaus pavadinimas turi būti toks pat kaip klasės pavadinimas. | Metodo pavadinimas gali būti toks pat kaip klasės pavadinimas arba ne. |
Java kopijavimo konstruktorius
„Java“ nėra kopijavimo konstruktoriaus. Tačiau mes galime nukopijuoti reikšmes iš vieno objekto į kitą, pavyzdžiui, kopijuoti konstruktorių C++.
Yra daug būdų, kaip nukopijuoti vieno objekto reikšmes į kitą „Java“. Jie yra:
- Pagal konstruktorių
- Priskirdami vieno objekto reikšmes kitam
- Objektų klasės metodu „clone()“.
Šiame pavyzdyje mes nukopijuosime vieno objekto reikšmes į kitą naudodami Java konstruktorių.
//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(); } }Išbandykite dabar
Išvestis:
111 Karan 111 Karan
Vertės kopijuojamos be konstruktoriaus
Mes galime nukopijuoti vieno objekto reikšmes į kitą, priskirdami objektų reikšmes kitam objektui. Tokiu atveju nereikia kurti konstruktoriaus.
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(); } }Išbandykite dabar
Išvestis:
111 Karan 111 Karan
K) Ar konstruktorius grąžina kokią nors vertę?
Taip, tai dabartinis klasės egzempliorius (negalite naudoti grąžinimo tipo, tačiau jis grąžina reikšmę).
java skaitytuvas kitas
Ar konstruktorius gali atlikti kitas užduotis, o ne inicijuoti?
Taip, pavyzdžiui, objekto kūrimas, gijos paleidimas, metodo iškvietimas ir tt Konstruktoriumi galite atlikti bet kokią operaciją taip, kaip atliekate metodu.
Ar „Java“ yra „Constructor“ klasė?
Taip.
Koks konstruktoriaus klasės tikslas?
„Java“ suteikia klasę „Constructor“, kurią galima naudoti norint gauti vidinę klasės konstruktoriaus informaciją. Jis yra java.lang.reflect pakete.