- Konstruktorok típusai
- A kivitelező túlterhelése
- A konstruktor visszaad valamilyen értéket?
- Egy objektum értékeinek másolása egy másikba
- A konstruktor más feladatokat is végrehajt az inicializálás helyett?
Ban ben Jáva , a konstruktor a metódushoz hasonló kódok blokkja. Akkor hívják, amikor a osztály létrehozva. A konstruktor hívásakor az objektum memóriája le van foglalva a memóriában.
Ez egy speciális módszer, amelyet az objektum inicializálására használnak.
Minden alkalommal, amikor egy objektumot a new() kulcsszó használatával hoz létre, legalább egy konstruktor meghívásra kerül.
Egy alapértelmezett konstruktort hív meg, ha nincs elérhető konstruktor az osztályban. Ebben az esetben a Java fordító alapértelmezés szerint alapértelmezett konstruktort biztosít.
A Java-ban kétféle konstruktor létezik: no-arg konstruktor és paraméterezett konstruktor.
Jegyzet: Konstruktornak hívják, mert az objektum létrehozásakor állítja össze az értékeket. Nem szükséges konstruktort írni egy osztályhoz. Ez azért van, mert a java fordító létrehoz egy alapértelmezett konstruktort, ha az osztályodnak nincs ilyen.
A Java konstruktor létrehozásának szabályai
Két szabály van meghatározva a konstruktor számára.
java cast int karakterláncba
- A konstruktor nevének meg kell egyeznie az osztály nevével
- A konstruktornak nem lehet kifejezett visszatérési típusa
- A Java konstruktor nem lehet absztrakt, statikus, végleges és szinkronizált
Megjegyzés: használhatjuk hozzáférés módosítók miközben konstruktort deklarált. Ez irányítja az objektum létrehozását. Más szavakkal, lehet privát, védett, nyilvános vagy alapértelmezett konstruktorunk a Java-ban.
Java konstruktorok típusai
A Java-ban kétféle konstruktor létezik:
- Alapértelmezett konstruktor (no-arg konstruktor)
- Paraméterezett konstruktor
Java alapértelmezett konstruktor
Egy konstruktort „Alapértelmezett konstruktornak” nevezünk, ha nincs paramétere.
Az alapértelmezett konstruktor szintaxisa:
(){}
Példa az alapértelmezett konstruktorra
Ebben a példában a no-arg konstruktort hozzuk létre a Bike osztályban. Az objektum létrehozásakor meg lesz hívva. |
//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(); } }Tesztelje most
Kimenet:
Bike is created
Szabály: Ha egy osztályban nincs konstruktor, a fordító automatikusan létrehoz egy alapértelmezett konstruktort.
K) Mi a célja az alapértelmezett konstruktornak?
Az alapértelmezett konstruktor az objektum alapértelmezett értékeinek megadására szolgál, például 0, null stb., a típustól függően.
Példa az alapértelmezett konstruktorra, amely megjeleníti az alapértelmezett értékeket
//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(); } }Tesztelje most
Kimenet:
0 null 0 null
Magyarázat: A fenti osztályban nem hoz létre konstruktort, így a fordító egy alapértelmezett konstruktort biztosít. Itt 0 és null értékeket ad meg az alapértelmezett konstruktor.
Java paraméterezett konstruktor
A meghatározott számú paraméterrel rendelkező konstruktort paraméterezett konstruktornak nevezzük.
Miért érdemes a paraméterezett konstruktort használni?
A paraméterezett konstruktor különböző értékeket biztosít a különböző objektumokhoz. Azonban ugyanazokat az értékeket is megadhatja.
Példa paraméterezett konstruktorra
Ebben a példában létrehoztuk a Student osztály konstruktorát, amelynek két paramétere van. A konstruktorban tetszőleges számú paraméter szerepelhet.
//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(); } }Tesztelje most
Kimenet:
string tömb
111 Karan 222 Aryan
Konstruktor túlterhelés Java-ban
A Java-ban a konstruktor olyan, mint egy metódus, de nincs visszatérési típusa. Túlterhelhető, mint a Java metódusok.
Konstruktőr túlterhelés Java-ban egy olyan technika, amelynél több konstruktor van különböző paraméterlistákkal. Úgy vannak elrendezve, hogy minden konstruktőr más-más feladatot lát el. Ezeket a fordító a listában szereplő paraméterek száma és típusa alapján különbözteti meg.
Példa a konstruktor túlterhelésére
//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(); } }Tesztelje most
Kimenet:
111 Karan 0 222 Aryan 25
A konstruktor és a metódus közötti különbség Java-ban
Sok különbség van a konstruktorok és a módszerek között. Az alábbiakban közöljük őket.
Java konstruktor | Java módszer |
---|---|
A konstruktort egy objektum állapotának inicializálására használjuk. | Egy metódust használnak egy objektum viselkedésének feltárására. |
A konstruktornak nem lehet visszatérési típusa. | A metódusnak rendelkeznie kell visszatérési típussal. |
A konstruktort implicit módon hívják meg. | A módszert kifejezetten hívják. |
A Java fordító alapértelmezett konstruktort biztosít, ha nincs konstruktor az osztályban. | A módszert a fordító semmi esetre sem biztosítja. |
A konstruktor nevének meg kell egyeznie az osztály nevével. | A metódus neve megegyezhet az osztály nevével, de lehet, hogy nem. |
Java Copy Constructor
A Java-ban nincs másoláskonstruktor. Az értékeket azonban átmásolhatjuk egyik objektumról a másikra, mint a konstruktor másolása a C++-ban.
Javaban sokféleképpen másolhatjuk át az egyik objektum értékeit a másikba. Ők:
- A kivitelező szerint
- Egy objektum értékeinek hozzárendelésével a másikhoz
- Az Object osztály clone() metódusával
Ebben a példában az egyik objektum értékeit átmásoljuk a másikba a Java konstruktor segítségével.
//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(); } }Tesztelje most
Kimenet:
111 Karan 111 Karan
Értékek másolása konstruktor nélkül
Egy objektum értékeit átmásolhatjuk egy másik objektumba, ha az objektumokat egy másik objektumhoz rendeljük hozzá. Ebben az esetben nincs szükség a konstruktor létrehozására.
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(); } }Tesztelje most
Kimenet:
111 Karan 111 Karan
K) A konstruktor visszaad valamilyen értéket?
Igen, ez az aktuális osztálypéldány (nem használhatja a visszatérési típust, de értéket ad vissza).
Elvégezhet más feladatokat a konstruktor inicializálás helyett?
Igen, például objektum létrehozása, szál indítása, metódus meghívása stb. Bármilyen műveletet végrehajthat a konstruktorban, ahogyan a metódusban is.
Van Constructor osztály a Java-ban?
Igen.
Mi a Constructor osztály célja?
A Java egy Constructor osztályt biztosít, amely felhasználható az osztályban lévő konstruktor belső információinak lekérésére. A java.lang.reflect csomagban található.