В Java не е разрешено конструкторът да бъде абстрактен, окончателен, статичен, естествен или strictfp. Така че, няма статика конструктор в Java .
Статичен конструктор, използван за инициализиране на статични данни, означава, че определената задача ще се изпълни само веднъж в цялата програма. Обикновено статичният конструктор се извиква автоматично, когато се генерира първият екземпляр или се препраща към статичен член. Статичният конструктор е изрично деклариран чрез използване на статична ключова дума. Статичният конструктор обаче не е разрешен в Java.
колелото за превъртане не работи
Някои ключови характеристики на статичния конструктор са следните:
- Няма да приема параметри или модификатори за достъп.
- Конкретен клас може да има само един статичен конструктор.
- Не позволява наследяване или претоварване.
- Извиква се автоматично, не може да бъде извикан директно или изрично.
- Ако стойността на статичните полета не е инициализирана, тя ще се инициализира със стойности по подразбиране.
Нека разберем защо статичният конструктор не е разрешен в Java:
Ами ако декларираме статичен конструктор?
Не е разрешен статичен конструктор Java програмиране . Използването на статичен конструктор е незаконно и противоречи на стандартите на Java. Така че 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(); } }
Изход:
абстрактни методи
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)
От горния пример можем да видим, че хвърля изключение ' Недопустим модификатор за типа конструктор '. И това е ясно написано публичен, защитен , & частен са разрешени.
Защо Java не поддържа статичен конструктор?
Когато маркираме нещо със статична ключова дума, то принадлежи само на клас, например статичен метод, статична променлива и т.н. Статичните методи не могат да бъдат наследени от своите подкласове, защото принадлежат на класа, в който са декларирани. По същия начин не можем да използваме статична променлива в нейните подкласове.
В случай на конструктор, конструкторът е многократно използваем блок код, което означава, че можем да го извикаме от неговите подкласове по време на създаването на обектите. Но когато го декларираме като статичен, той не може да се използва от своите подкласове, различни от деклариращите класове. Така че е незаконно да декларирате конструктор като статичен. Така ще се наруши целият мотив на наследствената концепция.
Ако декларираме конструктор като статичен, тогава той не може да бъде достъпен от неговите подкласове и ще принадлежи само на ниво клас. Програмата няма да бъде компилирана и ще генерира грешка по време на компилиране.
java коментари
Нека го разберем с пример:
кръгъл график
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(); } }
Изход:
In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class
От горния пример можем да забележим, че когато обектът на дъщерния клас е създаден, първо той извиква конструктора на родителския клас, а след това собствения си конструктор на класа. Това се случва, защото ключовата дума new създава обекта, след което извиква конструктора за инициализиране на стойностите. Всеки дъщерен клас има конструктор super() като първи оператор, който наследява свойствата от родителския клас.
Това е причината, поради която не можем да създадем статичен конструктор в Java.
Заключение:
Конструкторите в Java не могат да бъдат статични, защото ако конструкторите са маркирани като статични, те не могат да бъдат извикани от дъщерния клас; по този начин обектът на дъщерния клас няма да бъде създаден. Програмата няма да бъде компилирана и ще генерира грешка по време на компилиране.