- Arten von Konstrukteuren
- Konstruktorüberladung
- Gibt der Konstruktor einen Wert zurück?
- Kopieren der Werte eines Objekts in ein anderes
- Führt der Konstruktor anstelle der Initialisierung andere Aufgaben aus?
In Java , ein Konstruktor ist ein Codeblock ähnlich der Methode. Es wird aufgerufen, wenn eine Instanz von Klasse geschaffen. Zum Zeitpunkt des Aufrufs des Konstruktors wird Speicher für das Objekt im Speicher zugewiesen.
Es handelt sich um einen speziellen Methodentyp, der zum Initialisieren des Objekts verwendet wird.
Jedes Mal, wenn ein Objekt mit dem Schlüsselwort new() erstellt wird, wird mindestens ein Konstruktor aufgerufen.
Es ruft einen Standardkonstruktor auf, wenn in der Klasse kein Konstruktor verfügbar ist. In einem solchen Fall stellt der Java-Compiler standardmäßig einen Standardkonstruktor bereit.
In Java gibt es zwei Arten von Konstruktoren: Konstruktoren ohne Argumente und parametrisierte Konstruktoren.
Notiz: Er wird Konstruktor genannt, weil er die Werte zum Zeitpunkt der Objekterstellung erstellt. Es ist nicht notwendig, einen Konstruktor für eine Klasse zu schreiben. Dies liegt daran, dass der Java-Compiler einen Standardkonstruktor erstellt, wenn Ihre Klasse keinen hat.
Regeln zum Erstellen eines Java-Konstruktors
Für den Konstruktor sind zwei Regeln definiert.
mvc für Java
- Der Konstruktorname muss mit seinem Klassennamen identisch sein
- Ein Konstruktor darf keinen expliziten Rückgabetyp haben
- Ein Java-Konstruktor kann nicht abstrakt, statisch, endgültig und synchronisiert sein
Hinweis: Wir können verwenden Zugriffsmodifikatoren beim Deklarieren eines Konstruktors. Es steuert die Objekterstellung. Mit anderen Worten: Wir können in Java einen privaten, geschützten, öffentlichen oder Standardkonstruktor haben.
Arten von Java-Konstruktoren
In Java gibt es zwei Arten von Konstruktoren:
- Standardkonstruktor (Konstruktor ohne Argumente)
- Parametrisierter Konstruktor
Java-Standardkonstruktor
Ein Konstruktor wird „Standardkonstruktor“ genannt, wenn er keine Parameter hat.
Syntax des Standardkonstruktors:
(){}
Beispiel eines Standardkonstruktors
In diesem Beispiel erstellen wir den No-Arg-Konstruktor in der Bike-Klasse. Es wird zum Zeitpunkt der Objekterstellung aufgerufen. |
//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(); } }Testen Sie es jetzt
Ausgabe:
Bike is created
Regel: Wenn in einer Klasse kein Konstruktor vorhanden ist, erstellt der Compiler automatisch einen Standardkonstruktor.
F) Was ist der Zweck eines Standardkonstruktors?
Der Standardkonstruktor wird verwendet, um dem Objekt je nach Typ die Standardwerte wie 0, Null usw. bereitzustellen.
Beispiel eines Standardkonstruktors, der die Standardwerte anzeigt
//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(); } }Testen Sie es jetzt
Ausgabe:
0 null 0 null
Erläuterung: In der obigen Klasse erstellen Sie keinen Konstruktor, daher stellt Ihnen der Compiler einen Standardkonstruktor zur Verfügung. Hier werden vom Standardkonstruktor 0- und Nullwerte bereitgestellt.
Java-parametrisierter Konstruktor
Ein Konstruktor, der über eine bestimmte Anzahl von Parametern verfügt, wird als parametrisierter Konstruktor bezeichnet.
Warum den parametrisierten Konstruktor verwenden?
Der parametrisierte Konstruktor wird verwendet, um verschiedenen Objekten unterschiedliche Werte bereitzustellen. Sie können jedoch auch dieselben Werte angeben.
Beispiel eines parametrisierten Konstruktors
In diesem Beispiel haben wir den Konstruktor der Student-Klasse erstellt, der über zwei Parameter verfügt. Wir können eine beliebige Anzahl von Parametern im Konstruktor haben.
//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(); } }Testen Sie es jetzt
Ausgabe:
enthält Teilzeichenfolge Java
111 Karan 222 Aryan
Konstruktorüberladung in Java
In Java ist ein Konstruktor wie eine Methode, jedoch ohne Rückgabetyp. Es kann auch wie Java-Methoden überladen werden.
Konstrukteur Überladung in Java ist eine Technik, bei der mehr als ein Konstruktor mit unterschiedlichen Parameterlisten vorhanden ist. Sie sind so angeordnet, dass jeder Konstruktor eine andere Aufgabe ausführt. Sie werden vom Compiler anhand der Anzahl der Parameter in der Liste und ihrer Typen unterschieden.
Beispiel für eine Konstruktorüberladung
//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(); } }Testen Sie es jetzt
Ausgabe:
111 Karan 0 222 Aryan 25
Unterschied zwischen Konstruktor und Methode in Java
Es gibt viele Unterschiede zwischen Konstruktoren und Methoden. Sie sind unten aufgeführt.
Java-Konstruktor | Java-Methode |
---|---|
Ein Konstruktor wird verwendet, um den Zustand eines Objekts zu initialisieren. | Eine Methode wird verwendet, um das Verhalten eines Objekts offenzulegen. |
Ein Konstruktor darf keinen Rückgabetyp haben. | Eine Methode muss einen Rückgabetyp haben. |
Der Konstruktor wird implizit aufgerufen. | Die Methode wird explizit aufgerufen. |
Der Java-Compiler stellt einen Standardkonstruktor bereit, wenn Sie keinen Konstruktor in einer Klasse haben. | Die Methode wird in keinem Fall vom Compiler bereitgestellt. |
Der Konstruktorname muss mit dem Klassennamen identisch sein. | Der Methodenname kann mit dem Klassennamen identisch sein oder auch nicht. |
Java-Kopierkonstruktor
In Java gibt es keinen Kopierkonstruktor. Wir können die Werte jedoch wie der Kopierkonstruktor in C++ von einem Objekt auf ein anderes kopieren.
Es gibt viele Möglichkeiten, die Werte eines Objekts in ein anderes in Java zu kopieren. Sie sind:
- Vom Konstrukteur
- Durch Zuweisen der Werte eines Objekts zu einem anderen
- Mit der clone()-Methode der Object-Klasse
In diesem Beispiel kopieren wir die Werte eines Objekts mithilfe des Java-Konstruktors in ein anderes.
//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(); } }Testen Sie es jetzt
Ausgabe:
111 Karan 111 Karan
Werte ohne Konstruktor kopieren
Wir können die Werte eines Objekts in ein anderes kopieren, indem wir die Objektwerte einem anderen Objekt zuweisen. In diesem Fall ist es nicht erforderlich, den Konstruktor zu erstellen.
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(); } }Testen Sie es jetzt
Ausgabe:
111 Karan 111 Karan
F) Gibt der Konstruktor einen Wert zurück?
Ja, es ist die aktuelle Klasseninstanz (Sie können den Rückgabetyp nicht verwenden, obwohl er einen Wert zurückgibt).
Kann der Konstruktor anstelle der Initialisierung andere Aufgaben ausführen?
Ja, wie Objekterstellung, Starten eines Threads, Aufrufen einer Methode usw. Sie können jede Operation im Konstruktor genauso ausführen wie in der Methode.
Gibt es eine Konstruktorklasse in Java?
Ja.
Was ist der Zweck der Konstruktorklasse?
Java stellt eine Konstruktorklasse bereit, mit der die internen Informationen eines Konstruktors in der Klasse abgerufen werden können. Es befindet sich im Paket java.lang.reflect.