logo

Java statisk konstruktør

I Java har en konstruktør ikke lov til å være abstrakt, endelig, statisk, native eller strictfp. Så det er ingen statikk konstruktør i Java .

En statisk konstruktør som brukes til å initialisere statiske data betyr at den spesifiserte oppgaven kun vil utføres én gang gjennom hele programmet. Vanligvis kalles en statisk konstruktør automatisk når den første forekomsten genereres, eller et hvilket som helst statisk medlem refereres til. Den statiske konstruktøren er eksplisitt deklarert ved å bruke et statisk nøkkelord. Den statiske konstruktøren er imidlertid ikke tillatt i Java.

jvm i java

Noen nøkkelfunksjoner til den statiske konstruktøren er som følger:

  • Den vil ikke ta parametere eller tilgangsmodifikatorer.
  • En spesifikk klasse kan bare ha én statisk konstruktør.
  • Den tillater ikke arv eller overbelastning.
  • Den påkalles automatisk, kan ikke kalles direkte eller eksplisitt.
  • Hvis verdien til statiske felt ikke initialiseres, vil den initialiseres til standardverdier.

La oss forstå hvorfor den statiske konstruktøren ikke er tillatt i Java:

Hva om vi erklærer en statisk konstruktør?

En statisk konstruktør er ikke tillatt i Java programmering . Det er ulovlig og mot Java-standardene å bruke en statisk konstruktør. Så Java-programmet vil ikke bli kompilert og gir en kompileringstidsfeil.

La oss forstå det med et eksempel. Tenk på eksemplet nedenfor:

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

Produksjon:

 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 eksemplet ovenfor kan vi se at det gir et unntak ' Ulovlig modifikator for konstruktørtypen '. Og det står tydelig skrevet det offentlig, beskyttet , & privat er tillatt.

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

Når vi markerer noe med et statisk nøkkelord, tilhører det kun klasse, for eksempel statisk metode, statisk variabel osv. Statiske metoder kan ikke arves fra underklassene deres fordi de tilhører klassen de er deklarert i. På samme måte kan vi ikke bruke en statisk variabel i underklassene.

Når det gjelder en konstruktør, er en konstruktør en gjenbrukbar kodeblokk, noe som betyr at vi kan kalle den fra underklassene under opprettelsen av objektene. Men når vi erklærer det som statisk, kan det ikke brukes av andre underklasser enn de deklarerende klassene. Så det er ulovlig å erklære en konstruktør som statisk. Dermed vil det bryte med hele motivet til arvebegrepet.

Hvis vi erklærer en konstruktør som statisk, kan den ikke nås av underklassene og vil kun tilhøre et klassenivå. Programmet vil ikke bli kompilert og gir en kompileringstidsfeil.

algoritme for sammenslåing

La oss forstå det med et eksempel:

gi nytt navn til en katalog

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

Produksjon:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Fra eksemplet ovenfor kan vi legge merke til at når det underordnede klasseobjektet opprettes, starter det først den overordnede klassekonstruktøren, deretter sin egen klassekonstruktør. Det skjer fordi det nye nøkkelordet skaper objektet og deretter påkaller konstruktøren for å initialisere verdiene. Hver barneklasse har en super()-konstruktør som den første setningen som arver egenskapene fra den overordnede klassen.

Dette er grunnen til at vi ikke kan lage en statisk konstruktør i Java.

Konklusjon:

Konstruktørene i Java kan ikke være statiske fordi hvis konstruktørene er merket som statiske, kan de ikke kalles fra barneklassen; dermed vil ikke barneklassens objekt opprettes. Programmet vil ikke bli kompilert og gir en kompileringstidsfeil.