logo

Constructor static Java

În Java, un constructor nu are voie să fie abstract, final, static, nativ sau strictfp. Deci, nu există statică constructor în Java .

Un constructor static folosit pentru a inițializa datele statice înseamnă că sarcina specificată va fi executată o singură dată pe tot parcursul programului. De obicei, un constructor static este apelat automat atunci când este generată prima instanță sau se face referire la orice membru static. Constructorul static este declarat explicit folosind un cuvânt cheie static. Cu toate acestea, constructorul static nu este permis în Java.

exemplu de cod java

Unele caracteristici cheie ale constructorului static sunt următoarele:

  • Nu va lua parametri sau modificatori de acces.
  • O anumită clasă poate avea un singur constructor static.
  • Nu permite moștenirea sau supraîncărcarea.
  • Este invocat automat, nu poate fi apelat direct sau explicit.
  • Dacă valoarea câmpurilor statice nu este inițializată, se va inițializa la valorile implicite.

Să înțelegem de ce constructorul static nu este permis în Java:

Ce se întâmplă dacă declarăm un constructor static?

Un constructor static nu este permis Programare Java . Este ilegal și contrar standardelor Java să folosiți un constructor static. Deci, programul Java nu va fi compilat și va genera o eroare de compilare.

conversie tip java și casting

Să înțelegem cu un exemplu. Luați în considerare exemplul de mai jos:

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

Ieșire:

 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) 

Din exemplul de mai sus, putem vedea, se aruncă o excepție ' Modificator ilegal pentru tipul de constructor '. Și este scris clar că public, protejat , & privat sunt permise.

De ce Java nu acceptă un constructor static?

Când marcam ceva cu un cuvânt cheie static, acesta aparține numai clasei, de exemplu, metoda statică, variabila statică etc. Metodele statice nu pot fi moștenite din subclasele lor deoarece aparțin clasei în care sunt declarate. În mod similar, nu putem folosi o variabilă statică în subclasele sale.

maven install

În cazul unui constructor, un constructor este un bloc de cod reutilizabil, ceea ce înseamnă că îl putem apela din subclasele sale în timpul creării obiectelor. Dar, când îl declarăm ca static, nu poate fi folosit de subclasele sale, altele decât clasele declarante. Deci, este ilegal să declarați un constructor ca static. Astfel, va încălca întregul motiv al conceptului de moștenire.

Dacă declarăm un constructor ca fiind static, atunci acesta nu poate fi accesat de subclasele sale și va aparține doar unui nivel de clasă. Programul nu va fi compilat și va genera o eroare de compilare.

Să înțelegem cu un exemplu:

StaticConstructorExample.java:

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

StaticConstructorChild.java:

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

Ieșire:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Din exemplul de mai sus, putem observa că atunci când obiectul clasa copil este creat, mai întâi invocă constructorul clasei părinte, apoi propriul constructor de clasă. Se întâmplă deoarece noul cuvânt cheie creează obiectul, apoi invocă constructorul pentru inițializarea valorilor. Fiecare clasă copil are un constructor super() ca primă instrucțiune pentru a moșteni proprietățile din clasa părinte.

Acesta este motivul pentru care nu putem crea un constructor static în Java.

Concluzie:

Constructorii din Java nu pot fi statici, deoarece dacă constructorii sunt marcați ca statici, nu pot fi apelați din clasa copil; astfel, obiectul clasei copil nu va fi creat. Programul nu va fi compilat și va genera o eroare de compilare.