logo

Java statische constructor

In Java mag een constructor niet abstract, definitief, statisch, native of strictfp zijn. Er is dus geen sprake van statische elektriciteit constructeur in Java .

Een statische constructor die wordt gebruikt om statische gegevens te initialiseren, betekent dat de opgegeven taak slechts één keer in het programma wordt uitgevoerd. Normaal gesproken wordt er automatisch een statische constructor aangeroepen wanneer de eerste instantie wordt gegenereerd, of wanneer er naar een statisch lid wordt verwezen. De statische constructor wordt expliciet gedeclareerd met behulp van een statisch sleutelwoord. De statische constructor is echter niet toegestaan ​​in Java.

Lijst sorteer Java

Enkele belangrijke kenmerken van de statische constructor zijn als volgt:

  • Er zijn geen parameters of toegangsmodifiers nodig.
  • Een specifieke klasse kan slechts één statische constructor hebben.
  • Het staat geen overerving of overbelasting toe.
  • Het wordt automatisch aangeroepen, kan niet direct of expliciet worden aangeroepen.
  • Als de waarde van statische velden niet is geïnitialiseerd, wordt deze geïnitialiseerd naar de standaardwaarden.

Laten we begrijpen waarom de statische constructor niet is toegestaan ​​in Java:

Wat als we een statische constructor verklaren?

Een statische constructor is niet toegestaan Java-programmering . Het is illegaal en in strijd met de Java-standaarden om een ​​statische constructor te gebruiken. Het Java-programma wordt dus niet gecompileerd en veroorzaakt een compileerfout.

Laten we het begrijpen met een voorbeeld. Beschouw het onderstaande voorbeeld:

Java-pauze

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

Uitgang:

 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) 

Uit het bovenstaande voorbeeld kunnen we zien dat er een uitzondering wordt gegenereerd ' Ongeldige wijziging voor het constructortype '. En dat staat duidelijk geschreven publiek, beschermd , & privaat zijn toegestaan.

Waarom ondersteunt Java geen statische constructor?

Wanneer we iets met een statisch sleutelwoord markeren, behoort het alleen tot de klasse, bijvoorbeeld een statische methode, een statische variabele, enzovoort. Statische methoden kunnen niet worden geërfd van hun subklassen, omdat ze tot de klasse behoren waarin ze zijn gedeclareerd. Op dezelfde manier kunnen we geen statische variabele in zijn subklassen gebruiken.

In het geval van een constructor is een constructor een herbruikbaar codeblok, wat betekent dat we het vanuit zijn subklassen kunnen aanroepen tijdens het maken van de objecten. Maar als we het als statisch declareren, kan het niet worden gebruikt door andere subklassen dan de declarerende klassen. Het is dus illegaal om een ​​constructor als statisch te declareren. Het zal dus het hele motief van het erfenisconcept schenden.

Als we een constructor als statisch declareren, is deze niet toegankelijk voor zijn subklassen en behoort hij alleen tot een klasseniveau. Het programma wordt niet gecompileerd en genereert een compileerfout.

Vicky Kaushal-leeftijd

Laten we het begrijpen met een voorbeeld:

Hoe de ontwikkelaarsmodus in Android uit te schakelen

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

Uitgang:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Uit het bovenstaande voorbeeld kunnen we opmaken dat wanneer het onderliggende klasseobject wordt gemaakt, het eerst de bovenliggende klasseconstructor aanroept en vervolgens zijn eigen klasseconstructor. Dit gebeurt omdat het nieuwe sleutelwoord het object aanmaakt en vervolgens de constructor aanroept om de waarden te initialiseren. Elke onderliggende klasse heeft een super()-constructor als eerste statement die de eigenschappen van de bovenliggende klasse overneemt.

Dit is de reden waarom we in Java geen statische constructor kunnen maken.

Conclusie:

De constructors in Java kunnen niet statisch zijn, omdat als de constructors als statisch zijn gemarkeerd, ze niet kunnen worden aangeroepen vanuit de onderliggende klasse; het object van de onderliggende klasse wordt dus niet gemaakt. Het programma wordt niet gecompileerd en genereert een compileerfout.