- Typy konštruktérov
- Preťaženie konštruktora
- Vráti konštruktor nejakú hodnotu?
- Kopírovanie hodnôt jedného objektu do druhého
- Vykonáva konštruktor namiesto inicializácie iné úlohy
In Java , konštruktor je blok kódov podobný metóde. Volá sa, keď inštancia trieda je vytvorený. V čase volania konštruktora je v pamäti alokovaná pamäť pre objekt.
Je to špeciálny typ metódy, ktorá sa používa na inicializáciu objektu.
Zakaždým, keď sa vytvorí objekt pomocou kľúčového slova new(), zavolá sa aspoň jeden konštruktor.
Volá predvolený konštruktor, ak v triede nie je dostupný žiadny konštruktor. V takom prípade kompilátor Java štandardne poskytuje predvolený konštruktor.
V Jave existujú dva typy konštruktorov: konštruktor no-arg a parametrizovaný konštruktor.
Poznámka: Nazýva sa konštruktor, pretože konštruuje hodnoty v čase vytvárania objektu. Nie je potrebné písať konštruktor pre triedu. Je to preto, že kompilátor java vytvára predvolený konštruktor, ak vaša trieda žiadny nemá.
Pravidlá pre vytváranie konštruktora Java
Pre konštruktor sú definované dve pravidlá.
niť.zničiť
- Názov konštruktora musí byť rovnaký ako názov jeho triedy
- Konštruktor nesmie mať žiadny explicitný návratový typ
- Konštruktor Java nemôže byť abstraktný, statický, konečný a synchronizovaný
Poznámka: Môžeme použiť modifikátory prístupu pri deklarovaní konštruktéra. Riadi vytváranie objektu. Inými slovami, v Jave môžeme mať súkromný, chránený, verejný alebo predvolený konštruktor.
Typy konštruktorov Java
V Jave sú dva typy konštruktorov:
- Predvolený konštruktor (konštruktor bez argumentov)
- Parametrizovaný konštruktor
Predvolený konštruktor Java
Konštruktor sa nazýva „Predvolený konštruktor“, keď nemá žiadny parameter.
Syntax predvoleného konštruktora:
(){}
Príklad predvoleného konštruktora
V tomto príklade vytvárame konštruktor no-arg v triede Bike. Vyvolá sa v čase vytvárania objektu. |
//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(); } }Vyskúšajte to
Výkon:
Bike is created
Pravidlo: Ak v triede nie je žiadny konštruktor, kompilátor automaticky vytvorí predvolený konštruktor.
Q) Aký je účel predvoleného konštruktora?
Predvolený konštruktor sa používa na poskytnutie predvolených hodnôt objektu, ako je 0, null atď., v závislosti od typu.
Príklad predvoleného konštruktora, ktorý zobrazuje predvolené hodnoty
//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(); } }Vyskúšajte to
Výkon:
0 null 0 null
Vysvetlenie: Vo vyššie uvedenej triede nevytvárate žiadny konštruktor, takže kompilátor vám poskytuje predvolený konštruktor. Tu sú v predvolenom konštruktore poskytnuté hodnoty 0 a null.
Java parametrizovaný konštruktor
Konštruktor, ktorý má špecifický počet parametrov, sa nazýva parametrizovaný konštruktor.
Prečo používať parametrizovaný konštruktor?
Parametrizovaný konštruktor sa používa na poskytovanie rôznych hodnôt odlišným objektom. Môžete však zadať aj rovnaké hodnoty.
Príklad parametrizovaného konštruktora
V tomto príklade sme vytvorili konštruktor triedy Študent, ktorý má dva parametre. V konštruktore môžeme mať ľubovoľný počet parametrov.
//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(); } }Vyskúšajte to
Výkon:
111 Karan 222 Aryan
Preťaženie konštruktora v jazyku Java
V jazyku Java je konštruktor ako metóda, ale bez návratového typu. Môže byť tiež preťažený ako metódy Java.
Konštruktér preťaženie v Jave je technika s viac ako jedným konštruktorom s rôznymi zoznamami parametrov. Sú usporiadané tak, že každý konštruktér vykonáva inú úlohu. Kompilátor ich odlišuje počtom parametrov v zozname a ich typmi.
Príklad preťaženia konštruktora
//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(); } }Vyskúšajte to
Výkon:
ak inak bash
111 Karan 0 222 Aryan 25
Rozdiel medzi konštruktorom a metódou v Jave
Medzi konštruktérmi a metódami je veľa rozdielov. Sú uvedené nižšie.
Java Constructor | Java metóda |
---|---|
Konštruktor sa používa na inicializáciu stavu objektu. | Metóda sa používa na odhalenie správania objektu. |
Konštruktor nesmie mať návratový typ. | Metóda musí mať návratový typ. |
Konštruktor je vyvolaný implicitne. | Metóda sa volá explicitne. |
Kompilátor Java poskytuje predvolený konštruktor, ak v triede nemáte žiadny konštruktor. | Metódu v žiadnom prípade neposkytuje kompilátor. |
Názov konštruktora musí byť rovnaký ako názov triedy. | Názov metódy môže alebo nemusí byť rovnaký ako názov triedy. |
Java Copy Constructor
V jazyku Java neexistuje konštruktor kopírovania. Môžeme však kopírovať hodnoty z jedného objektu do druhého ako kopírovací konštruktor v C++.
V Jave existuje mnoho spôsobov, ako skopírovať hodnoty jedného objektu do druhého. Oni sú:
- Podľa konštruktéra
- Priraďovaním hodnôt jedného objektu k druhému
- Metódou clone() triedy Object
V tomto príklade sa chystáme skopírovať hodnoty jedného objektu do druhého pomocou konštruktora Java.
//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(); } }Vyskúšajte to
Výkon:
111 Karan 111 Karan
Kopírovanie hodnôt bez konštruktora
Hodnoty jedného objektu môžeme skopírovať do iného priradením hodnôt objektu inému objektu. V tomto prípade nie je potrebné vytvárať konštruktor.
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(); } }Vyskúšajte to
Výkon:
111 Karan 111 Karan
Q) Vráti konštruktor nejakú hodnotu?
Áno, je to aktuálna inštancia triedy (nemôžete použiť návratový typ, ale vracia hodnotu).
Môže konštruktor vykonávať iné úlohy namiesto inicializácie?
Áno, ako je vytváranie objektov, spustenie vlákna, volanie metódy atď. V konštruktore môžete vykonávať akúkoľvek operáciu tak, ako ju vykonávate v metóde.
Existuje v jazyku Java trieda Constructor?
Áno.
Aký je účel triedy Konštruktor?
Java poskytuje triedu Constructor, ktorú možno použiť na získanie interných informácií o konštruktore v triede. Nachádza sa v balíku java.lang.reflect.