logo

Java statisk konstruktør

I Java må en konstruktør ikke være abstrakt, endelig, statisk, native eller strictfp. Så der er ingen statisk konstruktør i Java .

En statisk konstruktør, der bruges til at initialisere statiske data, betyder, at den angivne opgave kun udføres én gang i hele programmet. Normalt kaldes en statisk konstruktør automatisk, når den første instans genereres, eller der refereres til et hvilket som helst statisk medlem. Den statiske konstruktør er eksplicit erklæret ved at bruge et statisk nøgleord. Den statiske konstruktør er dog ikke tilladt i Java.

jvm i java

Nogle nøglefunktioner i den statiske konstruktør er som følger:

  • Det vil ikke tage parametre eller adgangsmodifikatorer.
  • En specifik klasse kan kun have én statisk konstruktør.
  • Det tillader ikke arv eller overbelastning.
  • Den påkaldes automatisk, kan ikke kaldes direkte eller eksplicit.
  • Hvis værdien af ​​statiske felter ikke initialiseres, initialiseres den til standardværdier.

Lad os forstå, hvorfor den statiske konstruktør ikke er tilladt i Java:

Hvad hvis vi erklærer en statisk konstruktør?

En statisk konstruktør er ikke tilladt i Java programmering . Det er ulovligt og imod Java-standarderne at bruge en statisk konstruktør. Så Java-programmet vil ikke blive kompileret og give en kompileringsfejl.

Lad os forstå det med et eksempel. Overvej nedenstående eksempel:

switch statement java

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

Produktion:

 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) 

Fra ovenstående eksempel kan vi se, at det kaster en undtagelse ' Ulovlig modifikator for konstruktørtypen '. Og det står klart skrevet offentlig, beskyttet , & privat er tilladt.

Hvorfor understøtter Java ikke en statisk konstruktør?

Når vi markerer noget med et statisk nøgleord, hører det kun til klassen, for eksempel statisk metode, statisk variabel osv. Statiske metoder kan ikke nedarves fra deres underklasser, fordi de tilhører den klasse, hvor de er erklæret. På samme måde kan vi ikke bruge en statisk variabel i dens underklasser.

I tilfælde af en konstruktør er en konstruktør en genanvendelig kodeblok, hvilket betyder, at vi kan kalde den fra dens underklasser under oprettelsen af ​​objekterne. Men når vi erklærer det som statisk, kan det ikke bruges af andre underklasser end de erklærende klasser. Så det er ulovligt at erklære en konstruktør som statisk. Det vil således krænke hele motivet for arvekonceptet.

Hvis vi erklærer en konstruktør som statisk, kan den ikke tilgås af dens underklasser og vil kun tilhøre et klasseniveau. Programmet vil ikke blive kompileret og giver en kompileringsfejl.

streng split java

Lad os forstå det med et eksempel:

flyde til snor

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

Produktion:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Fra ovenstående eksempel kan vi bemærke, at når det underordnede klasseobjekt oprettes, kalder det først den overordnede klassekonstruktør og derefter sin egen klassekonstruktør. Det sker, fordi det nye nøgleord skaber objektet og derefter kalder konstruktøren til initialisering af værdierne. Hver underordnede klasse har en super()-konstruktør som den første sætning, der arver egenskaberne fra den overordnede klasse.

Dette er grunden til, at vi ikke kan oprette en statisk konstruktør i Java.

Konklusion:

Konstruktørerne i Java kan ikke være statiske, fordi hvis konstruktørerne er markeret som statiske, kan de ikke kaldes fra børneklassen; dermed oprettes den underordnede klasses objekt ikke. Programmet vil ikke blive kompileret og giver en kompileringsfejl.