Перевантаження конструктора в Java
⚡ Розумний підсумок
Перевантаження конструктора в Java дозволяє класу оголошувати кілька конструкторів, що відрізняються списком параметрів, надаючи розробникам гнучку ініціалізацію об'єктів, чистіше повторне використання коду через this() та передбачувану поведінку, коли під час створення екземпляра потрібні значення за замовчуванням або власні значення.

Що таке перевантаження конструктора? Java?
Перевантаження конструктора в Java – це техніка, за якої клас оголошує кілька конструкторів, що відрізняються списком параметрів. Компілятор розрізняє ці конструктори, аналізуючи кількість параметрів та їхні типи даних.
Приклади коректних конструкторів для класу Акаунт показано нижче:
Account(int a); Account (int a,int b); Account (String a,int b);
Навіщо нам потрібне перевантаження конструктора в Java?
Перевантаження конструктора в Java покращує гнучкість та ефективність коду, дозволяючи використовувати кілька конструкторів у класі, кожен з яких має різний список параметрів.
- Гнучкість у створенні об'єктів: Перевантаження конструктора дозволяє ініціалізувати об'єкти різними способами, залежно від кількості або типу параметрів.
- Code Багаторазовість: Ви можете повторно використовувати логіку конструктора, викликаючи один конструктор з іншого за допомогою це () keyword.
- Покращена читаність: Перевантажені конструктори роблять код більш інтуїтивним, пропонуючи специфічні опції для різних потреб ініціалізації.
- Стандартна та спеціальна ініціалізація: Перевантаження конструктора дозволяє легко створювати як об'єкти за замовчуванням, так і об'єкти, ініціалізовані користувачем.
Приклад: Перевантаження конструктора в Java
У наступному прикладі демонструється перевантаження конструктора в Java використовуючи клас з назвою Демонстрація.
Крок 1) Введіть код у редакторі.
class Demo{ int value1; int value2; /*Demo(){ value1 = 10; value2 = 20; System.out.println("Inside 1st Constructor"); }*/ Demo(int a){ value1 = a; System.out.println("Inside 2nd Constructor"); } Demo(int a,int b){ value1 = a; value2 = b; System.out.println("Inside 3rd Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); Demo d2 = new Demo(30); Demo d3 = new Demo(30,40); d1.display(); d2.display(); d3.display(); } }
Крок 2) Збережіть, скомпілюйте та запустіть код.
Крок 3) З'являється помилка. Спробуйте налагодити помилку, перш ніж переходити до наступного кроку перевантаження конструктора в Java.
Крок 4) Кожен клас має значення за замовчуванням Конструктор в JavaКонструктор за замовчуванням для клас Демо is Демо ()Якщо ви його не надасте, компілятор створить його за вас та ініціалізує змінні значеннями за замовчуванням.
Однак, якщо ви вкажете параметризований конструктор, наприклад Демо(ціле значення a) і хочете використовувати значення за замовчуванням Демо (), обов'язково це чітко оголосити.
Крок 5) Розкоментуйте рядки 4-8 коду, потім збережіть, скомпілюйте та запустіть програму ще раз, щоб спостерігати за зміною поведінки.
З'єднання конструкторів Java
Розглянемо сценарій, коли базовий клас розширюється дочірнім класом. Щоразу, коли створюється об’єкт дочірнього класу, спочатку викликається конструктор батьківського класу. Це називається Ланцюжок конструкторів.
приклад: Щоб зрозуміти ланцюжок конструкторів з перевантаженням конструктора в Java
Крок 1) Скопіюйте наступний код у редактор.
class Demo{ int value1; int value2; Demo(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } Demo(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends Demo{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } }
Крок 2) Запустіть код. Через ланцюжок конструкторів, коли об'єкт дочірнього класу ДемоДитина створюється конструктор Демо () батьківського класу викликається першим, а потім конструктор ДемоДитина() дитини біжить далі.
Очікуваний результат:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
Крок 3) Ви можете помітити, що батьківський конструктор Демо () виконується за замовчуванням. Щоб викликати перевантажений конструктор Демо(ціле значення a) замість цього використовуйте ключове слово “супер”.
Синтаксис:
super(); --or-- super(parameter list);
приклад: Якщо ваш батьківський конструктор такий Демо(Назва рядка, int a), уточните ви супер("Java”,5). Якщо використовується, ключове слово супер має бути першим рядком коду в конструкторі дочірнього класу.
Крок 4) Розкоментуйте рядок 26 та запустіть код. Спостерігайте за результатом.
вихід:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4
