logo

Що таке ланцюжок конструкторів у Java?

На Java, ланцюжок конструктора є послідовністю викликів конструктори при ініціалізації об'єкта. Він використовується, коли ми хочемо викликати декілька конструкторів один за одним, використовуючи лише екземпляр. У цьому розділі ми обговоримо ланцюжок конструкторів у Java детально з відповідними прикладами. Давайте швидко розглянемо що таке конструктор в Java.

Конструктор

в Java , конструктор — це те саме, що й метод, але єдина відмінність полягає в тому, що ім’я конструктора збігається з ім’ям класу. Він використовується для створення екземпляра класу. Він викликається автоматично, коли ми створюємо об'єкт класу. Він не має типу повернення. Пам'ятайте, що конструктором бути не може анотація , остаточний , синхронізовано , і статичний . Ми не можемо перевизначити конструктор.

У Java є два типи конструкторів:

  • Конструктор за замовчуванням (також відомий як конструктор без аргументів)
  • Параметризований конструктор

Зв'язування конструктора

У ланцюжку конструкторів конструктор викликається з іншого конструктора в тому самому класі, як цей процес ланцюжок конструктора. Відбувається у спадок. Коли ми створюємо екземпляр похідного класу, спочатку викликаються всі конструктори успадкованого класу (базового класу), а потім викликається конструктор викликаючого класу (похідного класу).

Ми можемо досягти ланцюжка конструктора двома способами:

арифметико-логічний блок
    В одному класі:Якщо конструктори належать до одного класу, ми використовуємо це З базового класу:Якщо конструктор належить до різних класів (батьківського та дочірнього класів), ми використовуємо супер ключове слово для виклику конструктора з базового класу.

Пам’ятайте, що зміна порядку конструктора не впливає на результат.

Що таке ланцюжок конструкторів у Java

Необхідність ланцюжка конструкторів

Припустимо, потрібно виконати п'ять завдань. Існує два способи виконання цих завдань: реалізація всіх завдань в одному конструкторі або створення окремих завдань в одному конструкторі.

Використовуючи механізм ланцюжка конструкторів, ми можемо реалізувати кілька завдань в одному конструкторі. Тому щоразу, коли ми стикаємося з проблемами такого типу, ми повинні використовувати ланцюжок конструкторів. Ми можемо зробити програму більш читабельною та зрозумілою, використовуючи ланцюжок конструкторів.

Правила з’єднання конструкторів

  • Вираз, який використовує це Ключове слово має бути першим рядком конструктора.
  • порядокне має значення в ланцюжку конструктора.
  • Має існувати хоча б один конструктор, який не використовує це

Виклик конструктора з іншого конструктора

Виклик конструктора можна здійснити двома способами:

    Використовуючи ключове слово this():Він використовується, коли ми хочемо викликати поточний конструктор класу в тому самому класі.Використовуючи ключове слово super():Він використовується, коли ми хочемо викликати конструктор суперкласу з базового класу.

Примітка: в одному блоці конструктора ми не можемо використовувати this() і super() одночасно.

Давайте розберемося в цих двох поняттях за допомогою програм Java.

латексний шрифт

Приклади з’єднання конструкторів

Виклик конструктора поточного класу

Ми використовуємо це() ключове слово, якщо ми хочемо викликати поточний конструктор класу в тому самому класі. Використання this() є обов’язковим, оскільки JVM ніколи не ставте його автоматично, як супер() ключове слово. Зверніть увагу, що this() має бути першим рядком конструктора. Має існувати хоча б один конструктор без це() ключове слово .

Синтаксис:

 this(); or this(parameters list); 

Наприклад:

 this(); this('Javatpoint'); 

Давайте створимо програму Java і викличемо поточний конструктор класу.

ConstructorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

Вихід:

статична java
Що таке ланцюжок конструкторів у Java

У наведеному вище прикладі ми створили екземпляр класу без передачі жодного параметра. Спочатку він викликає конструктор за замовчуванням, а конструктор за замовчуванням перенаправляє виклик на параметризований через this(). Оператори всередині параметризованого конструктора виконуються та повертаються назад до конструктора за замовчуванням. Після цього виконується решта операторів у конструкторі за замовчуванням, і об’єкт успішно ініціалізується. Нижче наведено послідовність викликів конструктора:

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

Виклик конструктора суперкласу

Іноді нам потрібно викликати конструктор суперкласу (батьківського класу) з дочірнього класу (похідного класу). У таких випадках ми використовуємо ключове слово super() у конструкторі похідного класу. Необов'язково писати super(), оскільки JVM автоматично поміщає його. Його завжди слід писати в першому рядку. Ми отримуємо синтаксичну помилку, якщо намагаємося викликати конструктор суперкласу в дочірньому класі.

Синтаксис:

 super(); or super(Parameter List); 

супер(): Він викликає безаргументний або типовий конструктор суперкласу.

шрифт gimp

супер(параметри): Він викликає параметризований конструктор суперкласу.

Пам'ятайте, що конструктор суперкласу не може бути успадкований у підкласі. Його можна викликати з конструктора підкласу за допомогою ключового слова super.

Давайте створимо програму на Java та реалізуємо ланцюжок конструкторів у успадкованому класі.

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

Вихід:

Що таке ланцюжок конструкторів у Java