logo

Costruttore statico Java

In Java, un costruttore non può essere astratto, finale, statico, nativo o strictfp. Quindi non c'è statica costruttore in Java .

Un costruttore statico utilizzato per inizializzare i dati statici significa che l'attività specificata verrà eseguita solo una volta in tutto il programma. In genere, un costruttore statico viene chiamato automaticamente quando viene generata la prima istanza o quando viene fatto riferimento a qualsiasi membro statico. Il costruttore statico viene dichiarato esplicitamente utilizzando una parola chiave statica. Tuttavia, il costruttore statico non è consentito in Java.

accendi Java

Alcune caratteristiche chiave del costruttore statico sono le seguenti:

  • Non richiederà parametri o modificatori di accesso.
  • Una classe specifica può avere un solo costruttore statico.
  • Non consente ereditarietà o sovraccarico.
  • Viene richiamato automaticamente, non può essere richiamato direttamente o esplicitamente.
  • Se il valore dei campi statici non è inizializzato, verrà inizializzato sui valori predefiniti.

Capiamo perché il costruttore statico non è consentito in Java:

Cosa succede se dichiariamo un costruttore statico?

Non è consentito l'accesso a un costruttore statico Programmazione Java . È illegale e contrario agli standard Java utilizzare un costruttore statico. Pertanto, il programma Java non verrà compilato e genererà un errore in fase di compilazione.

Capiamolo con un esempio. Considera l'esempio seguente:

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

Produzione:

conversione e casting del tipo Java
 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) 

Dall'esempio sopra, possiamo vedere che sta lanciando un'eccezione ' Modificatore non valido per il tipo di costruttore '. E questo è scritto chiaramente pubblico, protetto , & privato sono consentiti.

Perché Java non supporta un costruttore statico?

Quando contrassegniamo qualcosa con una parola chiave statica, appartiene solo alla classe, ad esempio metodo statico, variabile statica, ecc. I metodi statici non possono essere ereditati dalle loro sottoclassi perché appartengono alla classe in cui sono dichiarati. Allo stesso modo, non possiamo usare una variabile statica nelle sue sottoclassi.

Nel caso di un costruttore, un costruttore è un blocco di codice riutilizzabile, il che significa che possiamo chiamarlo dalle sue sottoclassi durante la creazione degli oggetti. Ma, quando lo dichiariamo statico, non può essere utilizzato dalle sue sottoclassi diverse dalle classi dichiaranti. Pertanto, è illegale dichiarare un costruttore come statico. Pertanto, violerà l'intero motivo del concetto di eredità.

Se dichiariamo un costruttore come statico, non sarà possibile accedervi dalle sue sottoclassi e apparterrà solo al livello di classe. Il programma non verrà compilato e genererà un errore in fase di compilazione.

kajal aggarwal

Capiamolo con un esempio:

programmazione round robin

StaticConstructorExample.java:

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

Produzione:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Dall'esempio sopra, possiamo notare che quando viene creato l'oggetto della classe figlia, prima invoca il costruttore della classe genitore, poi il proprio costruttore della classe. Ciò accade perché la nuova parola chiave crea l'oggetto quindi invoca il costruttore per inizializzare i valori. Ogni classe figlia ha un costruttore super() come prima istruzione ad ereditare le proprietà dalla classe genitore.

Questo è il motivo per cui non possiamo creare un costruttore statico in Java.

Conclusione:

I costruttori in Java non possono essere statici perché se i costruttori sono contrassegnati come statici non possono essere chiamati dalla classe figlia; pertanto, l'oggetto della classe figlia non verrà creato. Il programma non verrà compilato e genererà un errore in fase di compilazione.