logo

Java statinis konstruktorius

Java, konstruktorius negali būti abstraktus, galutinis, statinis, vietinis arba griežtas. Taigi, nėra statikos konstruktorius Java .

Statinis konstruktorius, naudojamas statiniams duomenims inicijuoti, reiškia, kad nurodyta užduotis bus vykdoma tik vieną kartą visoje programoje. Paprastai statinis konstruktorius automatiškai iškviečiamas, kai sugeneruojamas pirmasis egzempliorius arba nurodomas koks nors statinis narys. Statinis konstruktorius yra aiškiai deklaruojamas naudojant statinį raktinį žodį. Tačiau statinis konstruktorius neleidžiamas Java.

visa sumatoriaus grandinė

Kai kurios pagrindinės statinio konstruktoriaus savybės yra šios:

  • Tai nereikės parametrų ar prieigos modifikatorių.
  • Konkreti klasė gali turėti tik vieną statinį konstruktorių.
  • Tai neleidžia paveldėti ar perkrauti.
  • Jis iškviečiamas automatiškai, negali būti iškviestas tiesiogiai ar aiškiai.
  • Jei statinių laukų reikšmė nėra inicijuojama, ji inicijuojama į numatytąsias reikšmes.

Supraskime, kodėl statinis konstruktorius neleidžiamas Java:

Ką daryti, jei paskelbsime statinį konstruktorių?

Statiškas konstruktorius neįleidžiamas Java programavimas . Naudoti statinį konstruktorių yra neteisėta ir prieštarauja Java standartams. Taigi, Java programa nebus sukompiliuota ir išmes kompiliavimo laiko klaidą.

Supraskime tai pavyzdžiu. Apsvarstykite toliau pateiktą pavyzdį:

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

Išvestis:

surūšiuotas tuple python
 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) 

Iš aukščiau pateikto pavyzdžio matome, kad tai daro išimtį ' Neteisėtas konstruktoriaus tipo modifikatorius “. Ir tai aiškiai parašyta viešas, saugomas , & privatus yra leidžiami.

Kodėl „Java“ nepalaiko statinio konstruktoriaus?

Kai ką nors pažymime statiniu raktiniu žodžiu, tai priklauso tik klasei, pavyzdžiui, statinis metodas, statinis kintamasis ir pan. Statiniai metodai negali būti paveldimi iš jų poklasių, nes jie priklauso klasei, kurioje jie deklaruoti. Panašiai negalime naudoti statinio kintamojo jo poklasiuose.

Konstruktoriaus atveju konstruktorius yra daugkartinio naudojimo kodo blokas, o tai reiškia, kad kurdami objektus galime jį iškviesti iš jo poklasių. Bet kai paskelbiame jį kaip statinį, jo negali naudoti kiti jo poklasiai, išskyrus deklaruojančias klases. Taigi paskelbti statytoją statiniu yra neteisėta. Taigi tai pažeis visą paveldėjimo sampratos motyvą.

Jei paskelbsime konstruktorių statiniu, tada jo poklasiai negalės pasiekti ir priklausys tik klasės lygiui. Programa nebus kompiliuojama ir išmes kompiliavimo laiko klaidą.

css keičia vaizdo dydį

Supraskime tai pavyzdžiu:

StaticConstructorExample.java:

 public class StaticConstructorExample { public StaticConstructorExample() { /*Constructor of this class*/ System.out.println('In StaticConstructorExample Class'); } } 

StaticConstructorChild.java:

konvertuoti eilutę į datą
 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(); } } 

Išvestis:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Iš aukščiau pateikto pavyzdžio galime pastebėti, kad kai sukuriamas antrinės klasės objektas, pirmiausia jis iškviečia pirminės klasės konstruktorių, tada savo klasės konstruktorių. Taip nutinka todėl, kad naujasis raktinis žodis sukuria objektą, tada iškviečia konstruktorių reikšmėms inicijuoti. Kiekviena antrinė klasė turi super() konstruktorių kaip pirmąjį sakinį, paveldintį ypatybes iš pirminės klasės.

Tai yra priežastis, kodėl mes negalime sukurti statinio konstruktoriaus Java.

Išvada:

„Java“ konstruktoriai negali būti statiški, nes jei konstruktoriai pažymėti kaip statiški, jų negalima iškviesti iš antrinės klasės; taigi, vaikų klasės objektas nebus sukurtas. Programa nebus kompiliuojama ir išmes kompiliavimo laiko klaidą.