logo

Statický konštruktor Java

V jazyku Java nesmie byť konštruktor abstraktný, konečný, statický, natívny alebo strictfp. Neexistuje teda žiadna statika konštruktor v jazyku Java .

Statický konštruktor použitý na inicializáciu statických údajov znamená, že zadaná úloha sa v rámci programu vykoná iba raz. Zvyčajne sa statický konštruktor automaticky volá pri vygenerovaní prvej inštancie alebo sa odkazuje na akýkoľvek statický člen. Statický konštruktor je explicitne deklarovaný pomocou statického kľúčového slova. V jazyku Java však nie je povolený statický konštruktor.

25 c až k

Niektoré kľúčové vlastnosti statického konštruktora sú nasledovné:

  • Nepotrebuje parametre ani modifikátory prístupu.
  • Špecifická trieda môže mať iba jeden statický konštruktor.
  • Nepripúšťa dedičnosť ani preťažovanie.
  • Vyvoláva sa automaticky, nedá sa volať priamo ani explicitne.
  • Ak hodnota statických polí nie je inicializovaná, inicializuje sa na predvolené hodnoty.

Poďme pochopiť, prečo nie je statický konštruktor povolený v jazyku Java:

Čo ak vyhlásime statického konštruktora?

Nie je povolený statický konštruktor Java programovanie . Používanie statického konštruktora je nezákonné a proti štandardom Java. Program Java teda nebude skompilovaný a vyvolá chybu pri kompilácii.

Pochopme to na príklade. Zvážte nasledujúci príklad:

porovnávanie reťazcov 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(); } } 

Výkon:

 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) 

Z vyššie uvedeného príkladu vidíme, že vyvoláva výnimku ' Neplatný modifikátor pre typ konštruktora '. A je to jasne napísané verejné, chránené , & súkromné sú povolené.

Prečo Java nepodporuje statický konštruktor?

Keď čokoľvek označíme kľúčovým slovom static, patrí to iba do triedy, napríklad statická metóda, statická premenná atď. Statické metódy nemožno dediť z ich podtried, pretože patria do triedy, v ktorej sú deklarované. Podobne nemôžeme použiť statickú premennú v jej podtriedach.

V prípade konštruktora je konštruktor opakovane použiteľný blok kódu, čo znamená, že ho môžeme volať z jeho podtried počas vytvárania objektov. Keď ho však deklarujeme ako statický, nemôžu ho používať iné podtriedy ako deklarujúce triedy. Takže je nezákonné vyhlásiť konštruktor ako statický. Poruší teda celý motív koncepcie dedičstva.

Ak deklarujeme konštruktor ako statický, potom k nemu nemôžu pristupovať jeho podtriedy a bude patriť iba na úrovni triedy. Program nebude skompilovaný a vyvolá chybu pri kompilácii.

prvý notebook

Pochopme to na príklade:

java celé číslo

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

Výkon:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Z vyššie uvedeného príkladu si môžeme všimnúť, že keď je vytvorený objekt triedy potomka, najprv vyvolá konštruktor rodičovskej triedy, potom svoj vlastný konštruktor triedy. Deje sa to preto, že nové kľúčové slovo vytvára objekt a potom vyvoláva konštruktor na inicializáciu hodnôt. Každá podradená trieda má konštruktor super() ako prvý príkaz, ktorý zdedí vlastnosti od rodičovskej triedy.

To je dôvod, prečo nemôžeme vytvoriť statický konštruktor v Jave.

Záver:

Konštruktory v jazyku Java nemôžu byť statické, pretože ak sú konštruktory označené ako statické, nemožno ich volať z podradenej triedy; teda objekt podradenej triedy sa nevytvorí. Program nebude skompilovaný a vyvolá chybu pri kompilácii.