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