Перегрузка конструктора в Java
⚡ Умное резюме
Перегрузка конструктора в Java Это позволяет классу объявлять несколько конструкторов, различающихся списком параметров, предоставляя разработчикам гибкую инициализацию объектов, более чистое повторное использование кода с помощью this() и предсказуемое поведение всякий раз, когда при создании экземпляра требуются значения по умолчанию или пользовательские значения.

Что такое перегрузка конструктора в... Java?
Перегрузка конструктора в Java Это метод, при котором класс объявляет несколько конструкторов, различающихся списком параметров. Компилятор различает эти конструкторы, анализируя количество параметров и их типы данных.
Примеры допустимых конструкторов для класса Аккаунт показаны ниже:
Account(int a); Account (int a,int b); Account (String a,int b);
Зачем нужна перегрузка конструкторов? Java?
Перегрузка конструктора в Java Это повышает гибкость и эффективность кода, позволяя использовать несколько конструкторов в классе, каждый из которых имеет свой список параметров.
- Гибкость в создании объектов: Перегрузка конструкторов позволяет инициализировать объекты различными способами в зависимости от количества или типа параметров.
- Code Возможность повторного использования: Вы можете повторно использовать логику конструктора, вызывая один конструктор из другого, используя следующий синтаксис: это() ключевое слово.
- Улучшенная читаемость: Перегруженные конструкторы делают код более интуитивно понятным, предлагая конкретные параметры для различных потребностей инициализации.
- Инициализация по умолчанию и пользовательская инициализация: Перегрузка конструкторов позволяет легко создавать как объекты с инициализацией по умолчанию, так и объекты с пользовательской инициализацией.
Пример: Перегрузка конструктора в 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 Демо()Если вы его не укажете, компилятор создаст его для вас и инициализирует переменные значениями по умолчанию.
Однако, если вы укажете параметризованный конструктор, например, Demo(int 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) Запустите код. Из-за цепочки вызовов конструкторов, когда объект дочернего класса DemoChild создан конструктор Демо() Сначала вызывается конструктор родительского класса, а затем конструктор. DemoChild() Следующий этап — с участием ребенка.
Ожидаемый результат:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
Шаг 3) Вы можете заметить, что родительский конструктор Демо() Запускается по умолчанию. Чтобы вызвать перегруженный конструктор, необходимо вызвать его. Demo(int a) Вместо этого используйте ключевое слово. "супер".
Синтаксис:
super(); --or-- super(parameter list);
Пример: Если ваш родительский конструктор выглядит так: Demo(String Name, int a), вы уточните супер("Java»,5). Если используется ключевое слово супер Это должна быть первая строка кода в конструкторе дочернего класса.
Шаг 4) Раскомментируйте строку 26 и запустите код. Посмотрите на результат.
Выход:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4
