logo

Konstruktor statyczny Java

W Javie konstruktor nie może być abstrakcyjny, końcowy, statyczny, natywny ani strictfp. Zatem nie ma statyki konstruktor w Javie .

Konstruktor statyczny używany do inicjowania danych statycznych oznacza, że ​​określone zadanie zostanie wykonane tylko raz w całym programie. Zwykle konstruktor statyczny jest wywoływany automatycznie po wygenerowaniu pierwszej instancji lub przywołaniu dowolnego statycznego elementu członkowskiego. Konstruktor statyczny jest jawnie zadeklarowany przy użyciu słowa kluczowego static. Jednak konstruktor statyczny nie jest dozwolony w Javie.

stoi

Niektóre kluczowe cechy konstruktora statycznego są następujące:

  • Nie będzie przyjmować parametrów ani modyfikatorów dostępu.
  • Określona klasa może mieć tylko jednego konstruktora statycznego.
  • Nie pozwala na dziedziczenie ani przeciążanie.
  • Jest wywoływany automatycznie, nie można go wywołać bezpośrednio ani jawnie.
  • Jeśli wartość pól statycznych nie zostanie zainicjowana, zostaną zainicjowane wartości domyślne.

Rozumiemy, dlaczego konstruktor statyczny nie jest dozwolony w Javie:

Co się stanie, jeśli zadeklarujemy konstruktor statyczny?

Konstruktor statyczny nie jest dozwolony Programowanie w Javie . Używanie konstruktora statycznego jest nielegalne i sprzeczne ze standardami Java. Zatem program Java nie zostanie skompilowany i zgłosi błąd w czasie kompilacji.

Rozumiemy to na przykładzie. Rozważ poniższy przykład:

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

Wyjście:

 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 powyższego przykładu wynika, że ​​zgłasza wyjątek ' Niedozwolony modyfikator typu konstruktora '. I jest to wyraźnie napisane publiczny, chroniony , & prywatny są dozwolone.

Dlaczego Java nie obsługuje konstruktora statycznego?

Kiedy oznaczymy cokolwiek słowem kluczowym static, należy to tylko do klasy, np. metody statycznej, zmiennej statycznej itp. Metod statycznych nie można dziedziczyć po ich podklasach, ponieważ należą do klasy, w której są zadeklarowane. Podobnie nie możemy używać zmiennej statycznej w jej podklasach.

W przypadku konstruktora konstruktor jest blokiem kodu wielokrotnego użytku, co oznacza, że ​​możemy go wywołać z jego podklas podczas tworzenia obiektów. Kiedy jednak zadeklarujemy ją jako statyczną, nie będzie można jej używać w jej podklasach innych niż klasy deklarujące. Dlatego deklarowanie konstruktora jako statycznego jest nielegalne. Naruszy to zatem cały motyw koncepcji dziedziczenia.

Jeśli zadeklarujemy konstruktor jako statyczny, wówczas jego podklasy nie będą miały do ​​niego dostępu i będą należeć tylko do poziomu klasy. Program nie zostanie skompilowany i zgłosi błąd w czasie kompilacji.

skanowanie Java.nextstring

Rozumiemy to na przykładzie:

pytania do rozmowy kwalifikacyjnej w Javie

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

Wyjście:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Z powyższego przykładu możemy zauważyć, że gdy tworzony jest obiekt klasy podrzędnej, najpierw wywołuje on konstruktor klasy nadrzędnej, a następnie własny konstruktor klasy. Dzieje się tak, ponieważ new słowo kluczowe tworzy obiekt, a następnie wywołuje konstruktor w celu inicjalizacji wartości. Każda klasa potomna ma konstruktor super() jako pierwszą instrukcję dziedziczącą właściwości klasy nadrzędnej.

Z tego powodu nie możemy utworzyć konstruktora statycznego w Javie.

Wniosek:

Konstruktory w Javie nie mogą być statyczne, ponieważ jeśli konstruktory zostaną oznaczone jako statyczne, nie będzie można ich wywołać z klasy potomnej; w ten sposób obiekt klasy podrzędnej nie zostanie utworzony. Program nie zostanie skompilowany i zgłosi błąd w czasie kompilacji.