Î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.