logo

Јава статички конструктор

У Јави, конструктору није дозвољено да буде апстрактан, коначан, статички, изворни или стрицтфп. Дакле, нема статике конструктор у Јави .

Статички конструктор који се користи за иницијализацију статичких података значи да ће се наведени задатак извршити само једном током целог програма. Обично се статички конструктор аутоматски позива када се генерише прва инстанца или се референцира било који статички члан. Статички конструктор је експлицитно декларисан коришћењем кључне речи статиц. Међутим, статички конструктор није дозвољен у Јави.

јавасцрипт трим подстринг

Неке кључне карактеристике статичког конструктора су следеће:

  • Неће узимати параметре или модификаторе приступа.
  • Одређена класа може имати само један статички конструктор.
  • Не дозвољава наслеђивање или преоптерећење.
  • Позива се аутоматски, не може се позвати директно или експлицитно.
  • Ако вредност статичких поља није иницијализована, она ће се иницијализовати на подразумеване вредности.

Хајде да разумемо зашто статички конструктор није дозвољен у Јави:

Шта ако декларишемо статички конструктор?

Статички конструктор није дозвољен Јава програмирање . Незаконито је и противно Јава стандардима користити статички конструктор. Дакле, Јава програм неће бити компајлиран и избацити грешку у времену компајлирања.

Хајде да то разумемо на примеру. Размотрите следећи пример:

подешавања веб претраживача

СтатицЦонструцторДемо.јава:

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

Излаз:

 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) 

Из горњег примера, можемо видети, баца изузетак ' Недозвољен модификатор за тип конструктора '. И то је јасно написано јавно, заштићено , & приватни су дозвољени.

Зашто Јава не подржава статички конструктор?

Када било шта означимо статичном кључном речју, то припада само класи, на пример, статичка метода, статичка променљива, итд. Статичке методе не могу бити наслеђене од својих подкласа јер припадају класи у којој су декларисане. Слично, не можемо користити статичку променљиву у њеним подкласама.

У случају конструктора, конструктор је блок кода за вишекратну употребу, што значи да га можемо позвати из његових подкласа током креирања објеката. Али, када га прогласимо статичним, не могу га користити његове подкласе осим класа које декларисају. Дакле, незаконито је прогласити конструктор статичним. Тиме ће се нарушити читав мотив концепта наслеђивања.

Ако декларишемо конструктор као статички, онда му не могу приступити његове подкласе и припадаће само нивоу класе. Програм неће бити компајлиран и избацити грешку у времену компајлирања.

поништити последње урезивање

Хајде да то разумемо на примеру:

свитцх метод јава

СтатицЦонструцторЕкампле.јава:

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

СтатицЦонструцторЦхилд.јава:

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

Излаз:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Из горњег примера можемо приметити да када се креира објекат подређене класе, прво позива конструктор надређене класе, а затим сопствени конструктор класе. То се дешава зато што нова кључна реч креира објекат, а затим позива конструктор за иницијализацију вредности. Свака подређена класа има супер() конструктор као прву наредбу која наслеђује својства родитељске класе.

Ово је разлог зашто не можемо да креирамо статички конструктор у Јави.

Закључак:

Конструктори у Јави не могу бити статични јер ако су конструктори означени као статични, не могу се позвати из подређене класе; према томе, објекат дете класе неће бити креиран. Програм неће бити компајлиран и избацити грешку у времену компајлирања.