logo

Java statikus konstruktor

Java nyelven a konstruktor nem lehet absztrakt, végleges, statikus, natív vagy strictfp. Tehát nincs statikusság konstruktor Java nyelven .

A statikus adatok inicializálására használt statikus konstruktor azt jelenti, hogy a megadott feladat csak egyszer kerül végrehajtásra a program során. Általában egy statikus konstruktor automatikusan meghívásra kerül, amikor az első példányt generálják, vagy bármely statikus tagra hivatkoznak. A statikus konstruktor kifejezetten statikus kulcsszó használatával van deklarálva. A statikus konstruktor azonban nem engedélyezett a Java-ban.

mi az objektum java

A statikus konstruktor néhány fő jellemzője a következő:

  • Nem fog paramétereket vagy hozzáférési módosítókat használni.
  • Egy adott osztálynak csak egy statikus konstruktora lehet.
  • Nem teszi lehetővé az öröklődést vagy a túlterhelést.
  • Automatikusan meghívódik, nem hívható közvetlenül vagy kifejezetten.
  • Ha a statikus mezők értéke nincs inicializálva, akkor az alapértelmezett értékekre inicializálódik.

Nézzük meg, miért nem engedélyezett a statikus konstruktor a Java nyelven:

Mi van, ha statikus konstruktort deklarálunk?

Statikus konstruktort nem engednek be Java programozás . A statikus konstruktorok használata illegális és ellentétes a Java szabványokkal. Tehát a Java program nem fordítódik le, és fordítási idejű hibát okoz.

Értsük meg egy példával. Tekintsük az alábbi példát:

feladatkezelő linux

StaticConstructorDemo.java:

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

Kimenet:

 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) 

A fenti példából láthatjuk, hogy kivételt dob ​​' Érvénytelen módosító a konstruktor típushoz '. És ez egyértelműen le van írva nyilvános, védett , & magán megengedettek.

Miért nem támogatja a Java statikus konstruktort?

Ha statikus kulcsszóval bármit megjelölünk, az csak az osztályhoz tartozik, például statikus metódus, statikus változó stb. A statikus metódusok nem örökölhetők alosztályaikból, mert abba az osztályba tartoznak, amelyben deklarálva vannak. Hasonlóképpen, nem használhatunk statikus változót az alosztályaiban.

Egy konstruktor esetében a konstruktor egy újrafelhasználható kódblokk, ami azt jelenti, hogy az objektumok létrehozása során alosztályaiból hívhatjuk. De ha statikusnak deklaráljuk, akkor a deklaráló osztályokon kívül más alosztályai nem használhatják. Tehát illegális a kivitelezőt statikusnak nyilvánítani. Így sérti az öröklési koncepció teljes indítékát.

Ha egy konstruktort statikusnak deklarálunk, akkor az alosztályai nem érhetik el, és csak osztályszinthez fog tartozni. A program nem fordítódik le, és fordítási idejű hibát jelez.

np pont

Értsük meg egy példával:

gépi tanulási modellek

StaticConstructorExample.java:

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

StaticConstructorChild.java:

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

Kimenet:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

A fenti példából észrevehetjük, hogy a gyermek osztály objektum létrehozásakor először a szülő osztály konstruktorát hívja meg, majd a saját osztálykonstruktorát. Ez azért történik, mert az új kulcsszó létrehozza az objektumot, majd meghívja a konstruktort az értékek inicializálására. Minden gyermekosztályban van egy szuper() konstruktor az első utasítás, amely a szülőosztály tulajdonságait örökli.

Ez az oka annak, hogy Java nyelven nem tudunk statikus konstruktort létrehozni.

Következtetés:

A Java konstruktorai nem lehetnek statikusak, mert ha a konstruktorok statikusnak vannak jelölve, akkor nem hívhatók meg a gyermekosztályból; így a gyermekosztály objektuma nem jön létre. A program nem fordítódik le, és fordítási idejű hibát jelez.