logo

Konstruktorok Java nyelven

  1. Konstruktorok típusai
    1. Alapértelmezett konstruktor
    2. Paraméterezett konstruktor
  2. A kivitelező túlterhelése
  3. A konstruktor visszaad valamilyen értéket?
  4. Egy objektum értékeinek másolása egy másikba
  5. 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
  1. A konstruktor nevének meg kell egyeznie az osztály nevével
  2. A konstruktornak nem lehet kifejezett visszatérési típusa
  3. 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:

  1. Alapértelmezett konstruktor (no-arg konstruktor)
  2. Paraméterezett konstruktor
Java konstruktorok

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.

Java alapértelmezett konstruktor

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 konstruktorJava 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 konstruktorok vs. Methods

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ó.