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.