logo

Construtor estático Java

Em Java, um construtor não pode ser abstrato, final, estático, nativo ou strictfp. Então, não há estática construtor em Java .

Um construtor estático usado para inicializar dados estáticos significa que a tarefa especificada será executada apenas uma vez durante o programa. Normalmente, um construtor estático é chamado automaticamente quando a primeira instância é gerada ou qualquer membro estático é referenciado. O construtor estático é declarado explicitamente usando uma palavra-chave estática. No entanto, o construtor estático não é permitido em Java.

definir computador

Alguns recursos principais do construtor estático são os seguintes:

  • Não serão necessários parâmetros ou modificadores de acesso.
  • Uma classe específica pode ter apenas um construtor estático.
  • Não permite herança ou sobrecarga.
  • É invocado automaticamente, não pode ser chamado direta ou explicitamente.
  • Se o valor dos campos estáticos não for inicializado, ele será inicializado com os valores padrão.

Vamos entender porque o construtor estático não é permitido em Java:

E se declararmos um construtor estático?

Um construtor estático não é permitido em Programação Java . É ilegal e contra os padrões Java usar um construtor estático. Portanto, o programa Java não será compilado e gerará um erro em tempo de compilação.

Vamos entender isso com um exemplo. Considere o exemplo abaixo:

StaticConstructorDemo.java:

pivô do panda
 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(); } } 

Saída:

 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) 

No exemplo acima, podemos ver que está lançando uma exceção ' Modificador ilegal para o tipo de construtor '. E está claramente escrito que público, protegido , & privado são permitidos.

Por que Java não suporta um construtor estático?

Quando marcamos qualquer coisa com uma palavra-chave estática, ela pertence apenas à classe, por exemplo, método estático, variável estática, etc. Os métodos estáticos não podem ser herdados de suas subclasses porque pertencem à classe na qual são declarados. Da mesma forma, não podemos usar uma variável estática em suas subclasses.

como baixar vídeo do youtube vlc

No caso de um construtor, um construtor é um bloco de código reutilizável, o que significa que podemos chamá-lo a partir de suas subclasses durante a criação dos objetos. Mas, quando o declaramos como estático, ele não pode ser usado por suas subclasses além das classes declarantes. Portanto, é ilegal declarar um construtor como estático. Assim, violará todo o motivo do conceito de herança.

Se declararmos um construtor como estático, então ele não poderá ser acessado por suas subclasses e pertencerá apenas a um nível de classe. O programa não será compilado e gerará um erro em tempo de compilação.

Vamos entender com um exemplo:

StaticConstructorExample.java:

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

Saída:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

A partir do exemplo acima, podemos notar que quando o objeto da classe filho é criado, primeiro ele invoca o construtor da classe pai e depois o seu próprio construtor de classe. Isso está acontecendo porque a palavra-chave new está criando o objeto e depois invocando o construtor para inicializar os valores. Cada classe filha tem um construtor super() como a primeira instrução para herdar as propriedades da classe pai.

Esta é a razão pela qual não podemos criar um construtor estático em Java.

Conclusão:

Os construtores em Java não podem ser estáticos porque se os construtores forem marcados como estáticos, eles não poderão ser chamados a partir da classe filha; assim, o objeto da classe filha não será criado. O programa não será compilado e gerará um erro em tempo de compilação.