logo

Java staattinen konstruktori

Javassa konstruktori ei saa olla abstrakti, lopullinen, staattinen, natiivi tai strictfp. Ei siis ole staattista konstruktori Javassa .

Staattisen datan alustamiseen käytetty staattinen konstruktori tarkoittaa, että määritetty tehtävä suoritetaan vain kerran koko ohjelman ajan. Yleensä staattista konstruktoria kutsutaan automaattisesti, kun ensimmäinen esiintymä luodaan tai mihin tahansa staattiseen jäseneen viitataan. Staattinen konstruktori määritellään eksplisiittisesti käyttämällä staattista avainsanaa. Staattinen konstruktori ei kuitenkaan ole sallittu Javassa.

merkkijono etsi c++

Jotkut staattisen konstruktorin tärkeimmistä ominaisuuksista ovat seuraavat:

  • Se ei ota parametreja tai käyttöoikeusmuutoksia.
  • Tietyllä luokalla voi olla vain yksi staattinen konstruktori.
  • Se ei salli periytymistä tai ylikuormitusta.
  • Se vedetään automaattisesti, sitä ei voida kutsua suoraan tai eksplisiittisesti.
  • Jos staattisten kenttien arvoa ei ole alustettu, se alustetaan oletusarvoihin.

Ymmärretään, miksi staattinen konstruktori ei ole sallittu Javassa:

Entä jos julistamme staattisen rakentajan?

Staattinen rakentaja ei ole sallittu Java ohjelmointi . Staattisen konstruktorin käyttö on laitonta ja Java-standardien vastaista. Joten Java-ohjelmaa ei käännetä ja siitä tulee käännösaikavirhe.

Ymmärretään se esimerkin avulla. Harkitse alla olevaa esimerkkiä:

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

Lähtö:

konekirjoitus foreach
 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) 

Yllä olevasta esimerkistä voimme nähdä, että se tekee poikkeuksen ' Laiton muokkaaja rakentajatyypille '. Ja se on selvästi kirjoitettu julkinen, suojattu , & yksityinen ovat sallittuja.

Miksi Java ei tue staattista konstruktoria?

Kun merkitsemme mitä tahansa staattisella avainsanalla, se kuuluu vain luokkaan, esimerkiksi staattinen menetelmä, staattinen muuttuja jne. Staattisia menetelmiä ei voida periä alaluokistaan, koska ne kuuluvat luokkaan, jossa ne on ilmoitettu. Vastaavasti emme voi käyttää staattista muuttujaa sen alaluokissa.

Konstruktorin tapauksessa konstruktori on uudelleenkäytettävä koodilohko, mikä tarkoittaa, että voimme kutsua sitä alaluokistaan ​​objektien luomisen aikana. Mutta kun julistamme sen staattiseksi, sitä eivät voi käyttää sen muut alaluokat kuin ilmoittavat luokat. Joten on laitonta julistaa rakentaja staattiseksi. Siten se rikkoo perintökäsitteen koko motiivia.

Jos määritämme konstruktorin staattiseksi, sitä ei voi käyttää sen alaluokilla ja se kuuluu vain luokkatasolle. Ohjelmaa ei käännetä ja siitä tulee käännösaikavirhe.

kuinka luodaan taulukko javassa

Ymmärretään se esimerkillä:

supw

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

Lähtö:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Yllä olevasta esimerkistä voimme huomata, että kun aliluokkaobjekti luodaan, se kutsuu ensin pääluokan rakentajan, sitten oman luokan konstruktorinsa. Se tapahtuu, koska uusi avainsana luo objektin ja kutsuu sitten konstruktoria arvojen alustamiseksi. Jokaisessa aliluokassa on super()-konstruktori ensimmäisenä lauseena, joka perii ominaisuudet yläluokasta.

Tästä syystä emme voi luoda staattista konstruktoria Javassa.

Johtopäätös:

Javan konstruktorit eivät voi olla staattisia, koska jos konstruktorit on merkitty staattisiksi, niitä ei voida kutsua lapsiluokasta; siten aliluokan objektia ei luoda. Ohjelmaa ei käännetä ja siitä tulee käännösaikavirhe.