logo

Constructor estático de Java

En Java, no se permite que un constructor sea abstracto, final, estático, nativo o estricto. Entonces no hay estática constructor en java .

Un constructor estático utilizado para inicializar datos estáticos significa que la tarea especificada se ejecutará solo una vez durante todo el programa. Por lo general, se llama automáticamente a un constructor estático cuando se genera la primera instancia o se hace referencia a cualquier miembro estático. El constructor estático se declara explícitamente mediante una palabra clave estática. Sin embargo, el constructor estático no está permitido en Java.

cómo cambiar el nombre de un directorio Linux

Algunas características clave del constructor estático son las siguientes:

  • No aceptará parámetros ni modificadores de acceso.
  • Una clase específica sólo puede tener un constructor estático.
  • No permite herencia ni sobrecarga.
  • Se invoca automáticamente, no se puede llamar directa ni explícitamente.
  • Si el valor de los campos estáticos no se inicializa, se inicializará a los valores predeterminados.

Entendamos por qué el constructor estático no está permitido en Java:

¿Qué pasa si declaramos un constructor estático?

No se permite un constructor estático en programación java . Es ilegal y va contra los estándares de Java utilizar un constructor estático. Por lo tanto, el programa Java no se compilará y arrojará un error en tiempo de compilación.

valor java de la cadena

Entendámoslo con un ejemplo. Considere el siguiente ejemplo:

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

Producción:

 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) 

En el ejemplo anterior, podemos ver que se está lanzando una excepción ' Modificador ilegal para el tipo de constructor. '. Y está claramente escrito que público, protegido , & privado esta permitido.

¿Por qué Java no admite un constructor estático?

Cuando marcamos algo con una palabra clave estática, pertenece sólo a la clase, por ejemplo, método estático, variable estática, etc. Los métodos estáticos no se pueden heredar de sus subclases porque pertenecen a la clase en la que están declarados. Del mismo modo, no podemos utilizar una variable estática en sus subclases.

cómo convertir una cadena en int

En el caso de un constructor, un constructor es un bloque de código reutilizable, lo que significa que podemos llamarlo desde sus subclases durante la creación de los objetos. Pero, cuando lo declaramos como estático, no puede ser utilizado por sus subclases distintas de las clases declarantes. Por tanto, es ilegal declarar un constructor como estático. Por lo tanto, violará todo el motivo del concepto de herencia.

Si declaramos un constructor como estático, sus subclases no podrán acceder a él y pertenecerá únicamente a un nivel de clase. El programa no se compilará y arrojará un error en tiempo de compilación.

Entendámoslo con un ejemplo:

StaticConstructorExample.java:

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

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

Producción:

lista de matrices ordenada java
 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

En el ejemplo anterior, podemos notar que cuando se crea el objeto de clase secundaria, primero invoca al constructor de la clase principal y luego a su propio constructor de clase. Esto sucede porque la nueva palabra clave crea el objeto y luego invoca al constructor para inicializar los valores. Cada clase secundaria tiene un constructor super() como primera declaración para heredar las propiedades de la clase principal.

Ésta es la razón por la que no podemos crear un constructor estático en Java.

Conclusión:

Los constructores en Java no pueden ser estáticos porque si los constructores están marcados como estáticos, no se pueden llamar desde la clase secundaria; por lo tanto, no se creará el objeto de la clase secundaria. El programa no se compilará y arrojará un error en tiempo de compilación.