У Java конструктор не може бути абстрактним, кінцевим, статичним, нативним або strictfp. Отже, статики немає конструктор на Java .
Статичний конструктор, який використовується для ініціалізації статичних даних, означає, що вказане завдання буде виконано лише один раз протягом усієї програми. Зазвичай статичний конструктор викликається автоматично, коли генерується перший екземпляр або посилається на будь-який статичний член. Статичний конструктор явно оголошується за допомогою ключового слова static. Однак статичний конструктор не дозволений у Java.
вирівнювання тексту css
Ось деякі ключові особливості статичного конструктора:
- Він не прийматиме параметрів або модифікаторів доступу.
- Певний клас може мати лише один статичний конструктор.
- Він не допускає успадкування або перевантаження.
- Він викликається автоматично, не може бути викликаний прямо або явно.
- Якщо значення статичних полів не ініціалізовано, воно буде ініціалізовано значеннями за замовчуванням.
Давайте розберемося, чому в 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(); } }
Вихід:
необхідна збірка ubuntu
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 не підтримує статичний конструктор?
Коли ми позначаємо щось ключовим словом static, це належить лише до класу, наприклад, статичний метод, статична змінна тощо. Статичні методи не можна успадковувати від своїх підкласів, оскільки вони належать до класу, у якому вони оголошені. Так само ми не можемо використовувати статичну змінну в її підкласах.
У випадку конструктора, конструктор — це багаторазово використовуваний блок коду, що означає, що ми можемо викликати його з підкласів під час створення об’єктів. Але коли ми оголошуємо його як статичний, його не можуть використовувати його підкласи, крім класів оголошення. Отже, оголошувати конструктор як статичний незаконно. Таким чином, це порушить весь мотив концепції спадкування.
Якщо ми оголошуємо конструктор як статичний, то до нього не зможуть отримати доступ його підкласи, і він належатиме лише до рівня класу. Програма не буде скомпільована та видасть помилку під час компіляції.
r мовою c
Зрозуміємо це на прикладі:
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 не можуть бути статичними, оскільки якщо конструктори позначені як статичні, їх не можна викликати з дочірнього класу; таким чином, об'єкт дочірнього класу не буде створено. Програма не буде скомпільована та видасть помилку під час компіляції.