logo

Constructor estàtic de Java

A Java, un constructor no pot ser abstracte, final, estàtic, natiu o strictfp. Per tant, no hi ha estàtica constructor en Java .

Un constructor estàtic utilitzat per inicialitzar dades estàtiques significa que la tasca especificada només s'executarà una vegada al llarg del programa. Normalment, un constructor estàtic es crida automàticament quan es genera la primera instància o es fa referència a qualsevol membre estàtic. El constructor estàtic es declara explícitament utilitzant una paraula clau estàtica. Tanmateix, el constructor estàtic no està permès a Java.

sharwanand

Algunes de les característiques clau del constructor estàtic són les següents:

  • No prendrà paràmetres ni modificadors d'accés.
  • Una classe específica només pot tenir un constructor estàtic.
  • No permet l'herència ni la sobrecàrrega.
  • S'invoca automàticament, no es pot cridar directament ni explícitament.
  • Si el valor dels camps estàtics no està inicialitzat, s'inicializarà amb els valors predeterminats.

Entendrem per què el constructor estàtic no està permès a Java:

Què passa si declarem un constructor estàtic?

No es permet l'entrada d'un constructor estàtic Programació Java . És il·legal i contra els estàndards de Java utilitzar un constructor estàtic. Per tant, el programa Java no es compilarà i generarà un error en temps de compilació.

Entenem-ho amb un exemple. Considereu l'exemple següent:

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

Sortida:

t xancleta
 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 partir de l'exemple anterior, podem veure que està llançant una excepció ' Modificador il·legal per al tipus de constructor '. I això està clar escrit públic, protegit , & privat estan permesos.

Per què Java no admet un constructor estàtic?

Quan marquem qualsevol cosa amb una paraula clau estàtica, només pertany a la classe, per exemple, mètode estàtic, variable estàtica, etc. Els mètodes estàtics no es poden heretar de les seves subclasses perquè pertanyen a la classe en què es declaren. De la mateixa manera, no podem utilitzar una variable estàtica a les seves subclasses.

En el cas d'un constructor, un constructor és un bloc de codi reutilitzable, el que significa que podem cridar-lo des de les seves subclasses durant la creació dels objectes. Però, quan el declarem com a estàtic, no pot ser utilitzat per les seves subclasses que no siguin les classes declarants. Per tant, és il·legal declarar un constructor com a estàtic. Per tant, violarà tot el motiu del concepte d'herència.

Si declarem un constructor com a estàtic, les seves subclasses no hi podran accedir i només pertanyirà a un nivell de classe. El programa no es compilarà i generarà un error en temps de compilació.

versió java linux

Entenem-ho amb un exemple:

StaticConstructorExample.java:

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

StaticConstrutorChild.java:

convertir cadena a int 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(); } } 

Sortida:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

A partir de l'exemple anterior, podem observar que quan es crea l'objecte de classe fill, primer invoca el constructor de classe pare i després el seu propi constructor de classe. Està succeint perquè la paraula clau nova està creant l'objecte i després invocant el constructor per inicialitzar els valors. Cada classe fill té un constructor super() com a primera instrucció per heretar les propietats de la classe pare.

Aquesta és la raó per la qual no podem crear un constructor estàtic a Java.

Conclusió:

Els constructors de Java no poden ser estàtics perquè si els constructors estan marcats com a estàtics, no es poden cridar des de la classe fill; per tant, l'objecte de la classe fill no es crearà. El programa no es compilarà i generarà un error en temps de compilació.