Heim  >  Artikel  >  Java  >  Konstruktorüberladung mithilfe statischer Blöcke in Java

Konstruktorüberladung mithilfe statischer Blöcke in Java

王林
王林nach vorne
2023-09-06 14:41:061338Durchsuche

Konstruktorüberladung mithilfe statischer Blöcke in Java

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.

Grammatik

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.

Algorithmus

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.

Methode 1: Definieren Sie einen separaten statischen Block

Dieser Ansatz beinhaltet die separate Definition statischer Blöcke und überladener Konstruktoren.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

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

Beispiel

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();
   }
}

Ausgabe

Id	Name	Company	Exp
1	Apoorva	XYZ Corp	0
4	Anu	XYZ Corp	10
-	-	-		-

Anleitung

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.

Methode 2: Statische Methode vom Konstruktor aufrufen

Um gemeinsam genutzten Initialisierungscode auszuführen, können Sie statische Methoden in Ihrer Klasse deklarieren und sie vom Konstruktor aus aufrufen.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

public 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");
   }
}

Ausgabe

Common initialization code
No-arg constructor called
Common initialization code
Int constructor called
Common initialization code
String constructor called

Anleitung

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.

Vergleich zwischen Methode 1 und Methode 2

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

Fazit

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen