Der Standard-Konstruktor in Java
![Der Standard-Konstruktor in Java](/img/Java/ag-feature-image---java-default-constructor.webp)
In der Sprache Java ähnelt der Begriff Konstruktor
den Methoden, die wir in der Programmierung verwenden. Es gibt einige Eigenschaften eines Konstruktors, die Sie bei seiner Erstellung beachten sollten.
- Der Name des Konstruktors muss immer mit dem des Klassennamens übereinstimmen.
- Es darf keinen Rückgabetyp des Konstruktors geben.
- In einer Klasse kann es einen parametrisierten Konstruktor und einen
no-argument
-Konstruktor (Standardkonstruktor) geben. - Der Konstruktor wird immer aufgerufen, wenn ein Objekt instanziiert wird.
- Der Konstruktor sollte nicht mit Schlüsselwörtern wie
abstract
,static
,final
undsynchronized
fortfahren.
Der Standardkonstruktor in Java
Der Java-Standardkonstruktor wird oft als no-args
-Konstruktor bezeichnet. Unten können Sie sich den Codeblock ansehen, um den Standardkonstruktor in Java zu verstehen.
public class Main {
public static void main(String[] args) {
B b = new B();
System.out.println(b.a);
}
}
class B {
int a;
}
Im obigen Codeblock werden Sie feststellen, dass es zwei Klassen gibt; die erste enthält die Methode main
, die andere ist geschrieben, um die Funktionalität des Konstruktors abzubilden.
Die Funktion main
ist der Einstiegspunkt des Programms und die Ausführung beginnt hier. Die Treiberklassenanweisung new B()
ruft also den öffentlichen no-argument
-Konstruktor der B
-Klasse auf. Da es keine explizite Definition des angegebenen Konstruktors gab, erstellt der Compiler selbst einen Standardkonstruktor und ruft diesen in der obigen Anweisung auf.
Der Konstruktor initialisiert die Variablen der Klasse. Wenn kein Konstruktor definiert wird, initialisiert der Compiler den Wert der Variablen auf ihre Standardwerte. Wenn die Variable a
der Klasse B
in der Funktion println
referenziert wird, wird der ausgegebene Wert unten ausgegeben.
Ausgabe:
0
Der parametrisierte Konstruktor in Java
Die Verwendung von parametrisierten Konstruktoren besteht darin, die Anzahl der Parameter zum Zeitpunkt der Objekterstellung zu übergeben. Unten ist der Codeblock, der seine Funktion demonstriert.
public class Main {
public static void main(String[] args) {
A a = new A(1, "One");
System.out.println(a.a + " " + a.b);
// A a1= new A();
}
}
class A {
int a;
String b;
A(int a, String b) {
this.a = a;
this.b = b;
}
}
Im obigen Codeblock ist A
eine Klasse, um den parametrisierten Konstruktor zu demonstrieren. Und eine andere ist die Klasse, die die Methode main
enthält. In der Funktion ruft die Anweisung new A(1, "One")
intern den parametrisierten Konstruktor der Klasse A
auf. Das erstellte Objekt wird der Referenz der Klasse zugewiesen und die Definition des Konstruktors wird in der Klasse definiert.
Der Konstruktor A(int a, String b)
initialisiert den Wert der Variablen a
und b
. Die in den Parametern übergebenen Werte werden in die Variablen kopiert. In der Funktion println
ruft die Verwendung der Referenzvariablen die Klassenvariablen der Klasse A
auf; es druckt den instanziierten Wert in der Ausgabe mit einem dazwischen eingefügten Leerzeichen.
Daneben steht eine kommentierte Erklärung. Wir kommentieren die Anweisungen von der Ausführung mit dem Operator //
. Die Anweisung new A()
versucht intern, den no-argument
-Konstruktor der Klasse zu finden. Wenn der Compiler keinen Standardkonstruktor findet, kann er einen Standardkonstruktor erstellen.
Diese Fähigkeit wird auf den Fall beschränkt, in dem kein expliziter Konstruktor definiert ist. In diesem Fall muss ein Benutzer den no-args
-Konstruktor manuell erstellen. Das A a1= new A();
-Funktion gibt einen Kompilierzeitfehler aus. Die beiden Optionen zum Beheben des Problems bestehen darin, einen Standardkonstruktor zu erstellen oder die Signatur des vorhandenen parametrisierten Konstruktors zu ändern, der die vorhandene Anweisung zu einer Unterbrechung führt. Daher wird die Zeile kommentiert.
Ausgabe:
1 One
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn