Der Vorgang der Instanziierung eines Objekts ruft seinen entsprechenden Konstruktor auf, der die Grundlage für viele Funktionen in der objektorientierten Programmierung bildet. Es ist erwähnenswert, dass es in jedem Programm, das Objekte verwendet, ausnahmslos einen Standardkonstruktor gibt – der Compiler erstellt ihn automatisch für eine nahtlose Verwendung.
In dieser Diskussion werden wir uns eingehend mit der Konstruktorüberladung statischer Blöcke in Java befassen. Unter Konstruktorüberladung versteht man das Konzept der Definition mehrerer Konstruktoren mit unterschiedlichen Parametern in einer Klasse.
Public class class_name { Class_name() { } Class_name(par1, par2..) { } }
Die Verwendung von Konstruktoren mit statischen Blöcken bietet mehr Leistung und Flexibilität bei der Objektinitialisierung.
Um den Konstruktor mit einem statischen Block zu überladen, befolgen Sie bitte diese Schritte -
Schritt 1 – Erstellen Sie eine Klasse mit mehreren Konstruktoren mit unterschiedlichen Parametern.
Schritt 2 – Erstellen Sie einen statischen Block mit dem Schlüsselwort „static“
Dieser Block wird einmal ausgeführt, wenn die Klasse in den Speicher geladen wird.
Schritt 3 – Beim Laden einer Klasse wird zuerst der statische Block ausgeführt und dann wird der Konstruktor ausgeführt, wenn das Objekt erstellt wird.
Schritt 4 – Der Konstruktor wird basierend auf den bereitgestellten Argumenten aufgerufen.
Dieser Ansatz beinhaltet die separate Definition statischer Blöcke und überladener Konstruktoren.
Die chinesische Übersetzung vonClass Class_name{ Static { } Public class_name(){ } Public class_name(int value) { } Public class_name(string name) { } //Other methods }
Bei diesem Ansatz kann eine Klasse über überladene Konstruktoren mit unterschiedlichen Parameterlisten verfügen, die auch Initialisierungscode enthalten. Es gibt auch einen separaten statischen Block für die statische Initialisierung der Klasse. Dieser Block wird einmal ausgeführt.
In diesem Beispiel zeigen wir Methode 1
class Emp { int id, exp;String name;static String company; static { company = "XYZ Corp"; } public Emp(){ System.out.println("-" + "\t" + "-" + "\t" + "-" + "\t" + "\t" + "-"); } public Emp(int id, String name){ System.out.println(id + "\t" + name + "\t" + company + "\t" + exp); } public Emp(int id, String name, int exp) { System.out.println(id + "\t" + name + "\t" + company + "\t" + exp); } } public class Way2Class { public static void main(String[] args) { System.out.println("Id" + "\t" + "Name" + "\t" + "Company" + "\t" + "Exp"); Emp obj1 = new Emp(001, "Apoorva"); Emp obj2 = new Emp(004, "Anu", 10); Emp obj3 = new Emp(); } }
Id Name Company Exp 1 Apoorva XYZ Corp 0 4 Anu XYZ Corp 10 - - - -
In einem Unternehmen arbeiten Mitarbeiter mit beliebig vielen Jahren Erfahrung für dasselbe Unternehmen. Wenn also in der Unternehmensvariable kein Wert übergeben wird, wird automatisch derselbe Firmenname wie das Unternehmen festgelegt. Hierzu verwenden wir statische Blöcke.
Um gemeinsam genutzten Initialisierungscode auszuführen, können Sie statische Methoden in Ihrer Klasse deklarieren und sie vom Konstruktor aus aufrufen.
Die chinesische Übersetzung vonpublic class Way2Class { private int value; private String name; private static void initialize() { System.out.println("Common initialization code"); } public Way2Class() { initialize(); value = 0; name = "Default"; System.out.println("No-arg constructor called"); } public Way2Class(int value) { initialize(); this.value = value; name = "Value"; System.out.println("Int constructor called"); } public Way2Class(String name) { initialize(); value = 0; this.name = name; System.out.println("String constructor called"); } public static void main(String[] args) { Way2Class obj1 = new Way2Class(); Way2Class obj2 = new Way2Class(10); Way2Class obj3 = new Way2Class("Hello"); } }
Common initialization code No-arg constructor called Common initialization code Int constructor called Common initialization code String constructor called
Die Way2Class-Klasse in diesem Bild enthält drei Konstruktoren, von denen jeder die statische Methode initialize() aufruft, um gemeinsam genutzten Initialisierungscode auszuführen. Jeder Konstruktor ruft die in der Klasse angegebene statische Funktion initialize() auf. Basierend auf den angegebenen Parametern wird bei der Objekterstellung der entsprechende Konstruktor aufgerufen und die statische Methode initialize() zur Ausführung des öffentlichen Initialisierungscodes verwendet.
Standard |
Methode 1 |
Methode 2 |
---|---|---|
Typ |
Separate statische Blöcke |
Statische Methode vom Konstruktor aufrufen |
Methode |
Gemeinsame statische Methoden mit verschiedenen Konstruktoren wiederverwenden. |
Unabhängige statische Methoden und gemeinsame Konstruktoren. |
Methodenlogik |
Konstruktorüberladung und statische Blöcke |
Konstruktorüberladung und statische Blöcke |
Während Ansatz 2 (statische Methode, die vom Konstruktor aufgerufen wird) mehr Flexibilität bei der Codeorganisation und -vererbung bietet, ist Ansatz 1 (mehrere Konstruktoren mit gemeinsamem Code) unabhängiger und einfacher. Die Wahl zwischen den beiden Methoden hängt von den spezifischen Anforderungen und Designüberlegungen des aktuellen Projekts ab.
Das obige ist der detaillierte Inhalt vonKonstruktorüberladung mithilfe statischer Blöcke in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!