logo

Statischer Java-Konstruktor

In Java darf ein Konstruktor nicht abstrakt, final, statisch, nativ oder strictfp sein. Es gibt also keine statische Aufladung Konstruktor in Java .

Ein statischer Konstruktor, der zum Initialisieren statischer Daten verwendet wird, bedeutet, dass die angegebene Aufgabe im gesamten Programm nur einmal ausgeführt wird. Normalerweise wird ein statischer Konstruktor automatisch aufgerufen, wenn die erste Instanz generiert wird oder auf ein beliebiges statisches Mitglied verwiesen wird. Der statische Konstruktor wird explizit mithilfe eines statischen Schlüsselworts deklariert. Allerdings ist der statische Konstruktor in Java nicht erlaubt.

obj in Java

Einige Hauptfunktionen des statischen Konstruktors sind wie folgt:

  • Es werden keine Parameter oder Zugriffsmodifikatoren akzeptiert.
  • Eine bestimmte Klasse kann nur einen statischen Konstruktor haben.
  • Es erlaubt keine Vererbung oder Überladung.
  • Es wird automatisch aufgerufen und kann nicht direkt oder explizit aufgerufen werden.
  • Wenn der Wert statischer Felder nicht initialisiert ist, wird er auf die Standardwerte initialisiert.

Lassen Sie uns verstehen, warum der statische Konstruktor in Java nicht zulässig ist:

Was passiert, wenn wir einen statischen Konstruktor deklarieren?

Ein statischer Konstruktor ist nicht zulässig Java-Programmierung . Die Verwendung eines statischen Konstruktors ist illegal und verstößt gegen die Java-Standards. Daher wird das Java-Programm nicht kompiliert und es kommt zu einem Fehler bei der Kompilierung.

Lassen Sie es uns anhand eines Beispiels verstehen. Betrachten Sie das folgende Beispiel:

StaticConstructorDemo.java:

Sortieralgorithmus für Einfügungen
 public class StaticConstructorDemo { //Declaring a static constructor public static StaticConstructorDemo() { System.out.println('Static Constructor of the class'); } public static void main(String args[]) { // Creating a constructor object to invoke it StaticConstructorDemo obj = new StaticConstructorDemo(); } } 

Ausgabe:

 Exception in thread 'main' java.lang.Error: Unresolved compilation problem: Illegal modifier for the constructor in type StaticConstructorDemo; only public, protected & private are permitted. at StaticConstructorDemo.(StaticConstructorDemo.java:4) at StaticConstructorDemo.main(StaticConstructorDemo.java:13) 

Aus dem obigen Beispiel können wir ersehen, dass es eine Ausnahme auslöst. Ungültiger Modifikator für den Konstruktortyp '. Und das steht klar geschrieben öffentlich, geschützt , & Privat sind erlaubt.

Warum unterstützt Java keinen statischen Konstruktor?

Wenn wir etwas mit einem statischen Schlüsselwort markieren, gehört es nur zur Klasse, zum Beispiel eine statische Methode, eine statische Variable usw. Statische Methoden können nicht von ihren Unterklassen geerbt werden, da sie zu der Klasse gehören, in der sie deklariert sind. Ebenso können wir eine statische Variable nicht in ihren Unterklassen verwenden.

„Kruskals Algorithmus“

Im Fall eines Konstruktors ist ein Konstruktor ein wiederverwendbarer Codeblock, was bedeutet, dass wir ihn während der Erstellung der Objekte aus seinen Unterklassen aufrufen können. Wenn wir es jedoch als statisch deklarieren, kann es von seinen Unterklassen außer den deklarierenden Klassen nicht verwendet werden. Daher ist es illegal, einen Konstruktor als statisch zu deklarieren. Somit wird das gesamte Motiv des Vererbungskonzepts verletzt.

Wenn wir einen Konstruktor als statisch deklarieren, können seine Unterklassen nicht auf ihn zugreifen und gehören nur zu einer Klassenebene. Das Programm wird nicht kompiliert und gibt einen Kompilierungsfehler aus.

Lassen Sie es uns anhand eines Beispiels verstehen:

StaticConstructorExample.java:

 public class StaticConstructorExample { public StaticConstructorExample() { /*Constructor of this class*/ System.out.println('In StaticConstructorExample Class'); } } 

StaticConstructorChild.java:

Java Localdatetime
 public class StaticConstructorChild extends StaticConstructorExample { public StaticConstructorChild() { System.out.println('In StaticConstructorChild class'); } public void display() { System.out.println('Method of StaticConstructorChild class'); } public static void main(String args[]) { StaticConstructorChild obj = new StaticConstructorChild(); obj.display(); } } 

Ausgabe:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Aus dem obigen Beispiel können wir erkennen, dass beim Erstellen des untergeordneten Klassenobjekts zuerst der übergeordnete Klassenkonstruktor und dann sein eigener Klassenkonstruktor aufgerufen wird. Dies geschieht, weil das neue Schlüsselwort das Objekt erstellt und dann den Konstruktor zum Initialisieren der Werte aufruft. Jede untergeordnete Klasse verfügt über einen super()-Konstruktor als erste Anweisung, der die Eigenschaften von der übergeordneten Klasse erbt.

Aus diesem Grund können wir in Java keinen statischen Konstruktor erstellen.

Abschluss:

Die Konstruktoren in Java können nicht statisch sein, denn wenn die Konstruktoren als statisch markiert sind, können sie nicht von der untergeordneten Klasse aufgerufen werden; Daher wird das Objekt der untergeordneten Klasse nicht erstellt. Das Programm wird nicht kompiliert und gibt einen Kompilierungsfehler aus.