Beachten Sie Folgendes:
Ein privater Konstruktor in einer Klasse weist den Compiler an, den Standardkonstruktor ohne Argumente nicht bereitzustellen.
Private Konstruktoren können nicht instanziiert werden.
this() muss die erste nicht kommentierte Anweisung in einem Konstruktor sein. Kommentare sind egal, sie sind überall erlaubt.
Konstruktorüberladung in Java bezieht sich auf die Verwendung von mehr als einem Konstruktor in einer Instanzklasse. Allerdings muss jeder überladene Konstruktor unterschiedliche Signaturen haben. Damit die Kompilierung erfolgreich ist, muss jeder Konstruktor eine andere Liste von Argumenten enthalten.
Sie können mehrere Konstruktoren in derselben Klasse haben, solange sie unterschiedliche Methodensignaturen haben. Beim Überladen von Methoden müssen der Methodenname und die Parameterliste übereinstimmen. Bei Konstruktoren ist der Name immer gleich, da er mit dem Namen der Klasse übereinstimmen muss. Konstruktoren müssen unterschiedliche Parameter haben, um überladen zu werden.
public class Hamster { private String color; private int weight; public Hamster(int weight) { // first constructor this.weight = weight; color = "brown"; } public Hamster(int weight, String color) { // second constructor this.weight = weight; this.color = color; } }
Im Obigen akzeptiert einer der Konstruktoren einen einzelnen int-Parameter. Der andere akzeptiert ein int und einen String. Diese Parameterlisten sind unterschiedlich, sodass die Konstruktoren erfolgreich überladen werden.
Allerdings gibt es hier ein Problem. Es gibt ein wenig Doppelarbeit. Was wir wirklich wollen, ist, dass der erste Konstruktor den zweiten Konstruktor mit
aufruft
zwei Parameter.
Konstruktorverkettung
Dies geschieht, wenn überladene Konstruktoren sich gegenseitig aufrufen. Eine gängige Technik besteht darin, jeden zu haben
Der Konstruktor fügt einen Parameter hinzu, bis er zu dem Konstruktor gelangt, der die ganze Arbeit erledigt.
public class Mouse { private int numTeeth; private int numWhiskers; private int weight; public Mouse(int weight) { this(weight, 16); // calls constructor with 2 parameters } public Mouse(int weight, int numTeeth) { this(weight, numTeeth, 6); // calls constructor with 3 parameters } public Mouse(int weight, int numTeeth, int numWhiskers) { this.weight = weight; this.numTeeth = numTeeth; this.numWhiskers = numWhiskers; } public void print() { System.out.println(weight + " " + numTeeth + " " + numWhiskers); } public static void main(String[] args) { Mouse mouse = new Mouse(15); mouse.print(); } }
Ergebnis: 15 16 6
Die Methode main() ruft den Konstruktor mit einem Parameter auf. Dieser Konstruktor fügt einen zweiten fest codierten Wert hinzu und ruft den Konstruktor mit zwei auf
Parameter. Dieser Konstruktor fügt einen weiteren fest codierten Wert hinzu und ruft den Konstruktor auf
mit drei Parametern. Der Drei-Parameter-Konstruktor weist die Instanzvariablen zu.
Konstruktorverkettung wird verwendet, wenn Sie einen Konstruktor aufrufen möchten
in einem anderen Konstruktor.
Kombinierte Vorteile von Überlastung und Verkettung
Zusammen sorgen Konstruktorüberladung und -verkettung für Flexibilität, Effizienz und wartbaren Code. Durch Überladen können Sie verschiedene Initialisierungsszenarien unterstützen, während die Verkettung sicherstellt, dass Sie gemeinsame Logik zentralisieren und Redundanz reduzieren können.
Das obige ist der detaillierte Inhalt vonÜberladen von Konstruktoren und Konstruktorverkettung.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!