Перевантаження конструктора в Java

У чому перевантаження конструктора Java?

Java Перевантаження конструкторів — це техніка, за якої клас може мати будь-яку кількість конструкторів, які відрізняються списком параметрів. Компілятор розрізняє ці конструктори, беручи до уваги кількість параметрів у списку та їх тип.

Прикладами допустимих конструкторів для класу Account є

Account(int a);
Account (int a,int b);
Account (String a,int b);

Приклад 2: Щоб зрозуміти перевантаження конструктора в 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. Перевантажений конструктор за замовчуванням Java та цінності клас Демо is Демо (). Якщо ви не надаєте цей конструктор, компілятор створює його для вас і ініціалізує змінні значеннями за замовчуванням. Ви можете перевизначити цей конструктор за замовчуванням та ініціалізувати змінні бажаними значеннями, як показано в прикладі 1.

Але якщо ви вкажете параметризований конструктор, наприклад Demo(int a), і хочете використовувати конструктор за замовчуванням Java Demo(), його обов’язково потрібно вказати.

Іншими словами, якщо ваш конструктор перевантаження в Java перевизначено, і ви хочете використовувати конструктор за замовчуванням Java, його необхідно уточнити.

Крок 5) Розкоментуйте рядок № 4-8. Збережіть, скомпілюйте та запустіть код.

Навіщо нам потрібна перевантаження конструктора Java?

Перевантаження конструктора в Java дозволяє використовувати кілька конструкторів у класі, кожен з яких має різні списки параметрів. Це підвищує гнучкість і покращує ефективність коду.

  • Гнучкість у створенні об'єктів: Перевантаження конструктора дозволяє ініціалізувати об'єкти різними способами, залежно від кількості або типу параметрів.
  • Повторне використання коду: Ви можете повторно використовувати логіку конструктора, викликаючи один конструктор з іншого за допомогою ключового слова this().
  • Покращена читаність: Перевантажені конструктори допомагають зробити код більш інтуїтивно зрозумілим, пропонуючи спеціальні параметри конструктора для різних потреб ініціалізації.
  • Стандартна та спеціальна ініціалізація: Перевантаження конструктора дозволяє легко створювати об’єкти за замовчуванням і користувацькі ініціалізації.

Поширені запитання

Конструктор це спеціальний метод, який використовується для ініціалізації щойно створеного об’єкта та викликається одразу після виділення пам’яті для об’єкта. Його можна використовувати для ініціалізації об’єктів бажаними значеннями або значеннями за замовчуванням під час створення об’єкта. Для кодера необов’язково писати конструктор для класу.

Якщо для класу не надано визначений користувачем конструктор, компілятор ініціалізує змінні-члени значеннями за замовчуванням.

  • числові типи даних мають значення 0
  • типи даних char встановлено на нульовий символ ('\0')
  • для посилальних змінних встановлено значення null

  1. У ньому є однойменна назва як клас
  2. Він не повинен навіть повертати значення анулювати

Приклад 1: створіть свій перший конструктор у Java

Крок 1) Введіть наступну програму-конструктор Java редактор.

class Demo{
      int  value1;
      int  value2;
      Demo(){
         value1 = 10;
         value2 = 20;
         System.out.println("Inside Constructor");
     }
 
     public void display(){
        System.out.println("Value1 === "+value1);
        System.out.println("Value2 === "+value2);
    }
 
   public static void main(String args[]){
       Demo d1 = new Demo();
      d1.display();
  }
}

Крок 2) Збережіть, запустіть і скомпілюйте програму-конструктор Java і спостерігайте за результатом.

Очікуваний результат:

Inside Constructor
Value1 === 10
Value2 === 20

Розглянемо сценарій, коли базовий клас розширюється дочірнім класом. Щоразу, коли створюється об’єкт дочірнього класу, спочатку викликається конструктор батьківського класу. Це називається Зв'язування конструктора.

Приклад 3: Щоб зрозуміти ланцюжок конструктора

Крок 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) Запустіть код. Завдяки ланцюжку конструкторів, коли створюється об’єкт дочірнього класу DemoChild, спочатку викликається конструктор Demo() батьківського класу, а потім створюється конструктор DemoChild() дочірнього.

Очікуваний результат:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

Крок 3) Ви можете помітити, що конструктор батьківського класу Demo перевизначено. Що, якщо ви хочете викликати перевизначений конструктор Demo(int a) замість конструктора за замовчуванням Demo() під час створення вашого дочірнього об’єкта?

У таких випадках можна використовувати ключове слово “супер” для виклику перевизначених конструкторів батьківського класу.

Синтаксис: -

super();
--or--
super(parameter list);

приклад: Якщо ваш конструктор такий Демонстрація (ім'я рядка, int a), уточните ви супер("Java”,5). Якщо використовується, ключове слово super має бути першим рядком коду у конструкторі дочірнього класу.

Крок 4) Розкомментуйте рядок № 26 і запустіть код. Спостерігайте за результатом.

вихід:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4