Цепочка конструкторов в Java с примерами и реализацией

Опубликовано: 2023-06-05

В Java конструкторы можно понимать как блоки кода, используемые для инициализации вновь созданных объектов. Конструктор похож на методы экземпляра в Java. Однако между конструкторами и методами в Java есть принципиальное различие: в то время как методы имеют тип возвращаемого значения, конструкторы не имеют определенного типа возвращаемого значения. Программисты часто называют конструкторы особым типом методов в Java.

Конструкторы в Java имеют то же имя, что и класс, и выглядят следующим образом:

открытый класс myProgram {

//Это конструктор

моя программа () {

}

..

}

Когда конструктор вызывается из другого конструктора, в Java происходит связывание конструкторов. Однако, прежде чем мы углубимся в цепочку конструкторов, давайте сначала кратко рассмотрим, как конструкторы работают в Java, а также приведем несколько примеров, чтобы закрепить ваше понимание.

Оглавление

Как работают конструкторы в Java?

Чтобы понять, как работают конструкторы, давайте рассмотрим пример. Предположим, у нас есть класс с именем myProgram. Теперь, когда мы создадим объект этого класса, нам нужно будет написать следующий оператор:

объект моей программы = новая моя программа ()

Как видите, ключевое слово new, используемое в приведенном выше примере, создает объект myProgram и вызывает конструктор для инициализации этого вновь созданного объекта.

Если это звучит для вас немного запутанно, не волнуйтесь. Давайте рассмотрим простую программу-конструктор на Java, чтобы лучше понять работу конструкторов в Java.

Базовая программа-конструктор на Java

Посмотрите на следующий фрагмент кода Java, в котором используются конструкторы:

тест открытого класса {

Струнная книга;

//Конструктор

Тест(){

this.book = «Над пропастью во ржи»;

}

public static void main(String[] args) {

Объект теста = новый тест();

System.out.println(obj.book);

}

}

Выход:

Над пропастью во ржи

В приведенной выше программе мы создали объект с именем «obj» нашего класса Program. Затем мы напечатали имя переменной экземпляра этого вновь созданного объекта. Как видно из вывода, вывод совпадает со значением, переданным в «book» во время инициализации конструктора.

Это показывает, что в момент создания объекта obj автоматически вызывается конструктор. Здесь мы использовали ключевое слово this для ссылки на текущий объект. Есть и другие способы сделать это, о которых мы поговорим позже в статье при обсуждении цепочки конструкторов.

Разобравшись с основами конструктора в Java, давайте перейдем к цепочке конструкторов в Java и к тому, как это работает!

Цепочка конструкторов внутри одного класса

Ночто такое цепочка конструкторов в Java с участием одного класса?Вызов одного конструктора из другого в том же классе включает цепочку конструкторов внутри этого класса. Ключевое слово this используется в синтаксисе цепочки конструкторов внутри одного класса. Текущий экземпляр класса упоминается, когда используется «this». Лучше всего понять использованиецепочки конструкторов в Java на примере .

Цепочка конструкторов из базовых/родительских классов

Класс в Java может быть производным от другого класса; производный класс называется подклассом, а класс, от которого он происходит, называется суперклассом. Подкласс может иметь свои собственные конструкторы и вызывать конструкторы своего суперкласса.

Конструктор суперкласса использует термин super(), за которым следуют необходимые входные данные. Ключевое слово super() всегда должно присутствовать в первой строке конструктора подкласса.

Звонок от другого строителя, строителя

Используя ключевое слово this(), конструктор в Java может вызвать другой конструктор из того же класса. Первым ключевым словом в конструкторе всегда должно быть ключевое слово this(), которое можно использовать только для вызова другого конструктора того же типа.

Конструктор телефонного суперкласса

Ключевое слово super() в Java позволяет конструкторам подклассов вызывать конструктор суперкласса. Ключевое слово super(), которое можно использовать только для вызова конструктора суперкласса подкласса, всегда должно быть первой строкой конструктора подкласса.

Java-программы могут вести себя иначе, если конструкторы расположены в другой последовательности. Если в классе много конструкторов и один из них использует ключевое слово this() для вызова другого конструктора, изменение порядка конструкторов может изменить поведение программы.

Другой способ объединения конструкторов в цепочку с использованием блока инициализации

Использование блока инициализации — еще один подход к цепочке конструкторов в Java .Часть кода, известная как блок инициализации, выполняется

Основы цепочки конструкторов в Java

Когда мы вызываем конструктор из другого конструктора того же класса, то, что происходит, называется цепочкой конструкторов. Основная цель создания цепочки конструкторов — передать параметры через кучу разных конструкторов и инициализировать их только в одном месте. Таким образом, вы получаете возможность поддерживать все свои инициализации в одном месте, в то время как пользователям могут быть предоставлены разные конструкторы.

Если вы не выполняете связывание конструкторов и два разных конструктора требуют один параметр, вам нужно будет дважды инициализировать этот параметр. Кроме того, каждый раз при изменении инициализации вам нужно будет вносить соответствующие изменения во все конструкторы, а не только в один.

Как правило, вы всегда должны вызывать конструкторы с большим количеством аргументов из конструкторов с меньшим количеством аргументов. Вы также должны знать, что мы можем перегрузить несколько конструкторов в классе. Однако во время создания объекта вызывается только один конкретный конструктор. При программировании на Java может возникнуть довольно много ситуаций, когда вам нужно будет вызывать несколько конструкторов друг из друга без создания разных объектов. Этот механизм вызова одного конструктора из другого конструктора и когда задействованный конструктор вызывает другой конструктор, известен как цепочка конструкторов.

Изучайтеонлайн-курсы по программному обеспечениюот лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Есть две основные вещи, которые вы должны иметь в виду в отношении цепочки конструкторов, чтобы обеспечить максимальную ясность:

  • Основная цель цепочки конструкторов — поддерживать код. Идея состоит в том, чтобы помочь вам написать только один фрагмент кода, который можно повторно использовать в вашей программе. Таким образом, ваш код будет не только чистым и читаемым, но и будет намного проще управлять всеми исправлениями и изменениями, происходящими только в одном месте, а не во всех конструкторах.
  • Вызванный конструктор не создает отдельный объект. Вместо этого он использует текущий запущенный объект для вызова другого конструктора. Это похоже на вызов другого метода внутри вашего конструктора, за исключением того, что он также является конструктором.

Как вы видели в предыдущем примере, мы использовали это ключевое слово для доступа к параметрам конструктора. Точно так же для цепочки конструкторов также требуется в основном два ключевых слова. Вот эти два ключевых слова:

  • this — его представление метода вызывает текущий конструктор класса.
  • super — его представление метода вызывает немедленный супер или конструктор родительского суперкласса.

Кроме того, вы должны знать несколько других важных терминов и определений с точки зрения цепочки конструкторов в Java:

  • Вызов конструктора: когда вы вызываете конструктор и этот конструктор успешно вызывается, это называется вызовом конструктора.
  • Выполнение конструктора: если при вызове конструктора элемент управления начинает выполнять операторы в теле конструктора. Это известно как выполнение конструктора.

Ключевые правила цепочки конструкторов в Java

Разобравшись с основами создания цепочек конструкторов, давайте рассмотрим некоторые основные правила работы с цепочками конструкторов в Java:

  • this() может вызывать только параметры, принадлежащие одному конструктору.
  • super() может вызвать только непосредственный конструктор суперкласса.
  • this() и super() должны быть первым оператором в конструкторе.
  • This() и super() нельзя использовать в одном и том же конструкторе, поскольку оба оператора должны быть первыми операторами, что практически невозможно.
  • Вы не можете добавить this() во все конструкторы одного и того же класса, так как должен быть хотя бы один конструктор без оператора this().
  • Вызов и выполнение конструкторов в Java происходит наоборот. Итак, если Конструкторы вызывались в порядке A, B, C, то и выполнение будет в порядке C, B, A.

Например, здесь у нас есть два отдельных класса, которые работают, перегружая разные конструкторы. Мы хотим выполнить конструкторы в порядке 2, 1, 4, 3, 5.

Чтобы выполнить конструкторы по порядку, нам нужно вызывать конструкторы точно в противоположном порядке, например 5, 3, 4, 1, 2, см. пример ниже.

класс Родитель

{

Родитель()// 1

{

это("привет");

System.out.println("в конструкторе Parent 0 arg 1");

}

Родитель(строка сообщения)// 2

{

System.out.println («в родительском (строковом) конструкторе 2»);

}

}

Конструктор класса расширяет Родителя

{

Конструктор()// 3

{

this(10);// вызов конструктора 5 чисел

System.out.println("в конструкторе 0 аргумент конструктора 3");

}

Конструктор(String msg)// 4

{

super();//вызов конструктора родительского класса 1 числа

System.out.println («in Constructor (String msg) arg конструктор 4»);

}

Конструктор(int i)// 5

{

this("привет");//вызов конструктора 4 чисел

System.out.println («в конструкторе (int i) конструктор 5»);

}

// метод main()

public static void main (аргументы String [])

{

Конструктор cobj = новый конструктор(); // вызов конструктора 3 чисел

}

}

Выход:

в родительском (строковом) конструкторе 2

в Parent 0 arg конструктор 1

в конструкторе (String msg) arg конструктор 4

в конструкторе Constructor(int i) конструктор 5

в конструкторе 0 arg конструктор 3

Суммируя все концепции конструкторов и цепочки конструкторов в Java, с помощью одного последнего примера:

класс Эмп

{

общедоступная строка EName;

публичный EEarnings;

публичный строковый адрес;

общественный Эмп ()

{

это("Рахул");

}

public Emp (имя строки)

{

это(имя, 140035);

}

public Emp (имя строки, int sal)

{

это(имя, сал, «Нью-Дели»);

}

публичный сотрудник (имя строки, int sal, добавление строки)

{

this.ENName=имя;

this.EEarnings=сал;

этот.адрес=добавить;

}

недействительный дисп () {

System.out.println("Имя:"+EName);

System.out.println("Зарплата: "+EEarnings);

System.out.println("Адрес:"+адрес);

}

public static void main (аргументы String [])

{

Сотрудник obj = новый Сотрудник();

объект.disp();

}

}

Выход:

Имя сотрудника: Рахул

Зарплата сотрудника: 140035

Адрес сотрудника: Нью-Дели

Заключение

На этом мы подошли к концу этой статьи. Мы надеемся, что это прояснило ваши сомнения относительно цепочки конструкторов в Java и еще больше укрепило ваше понимание. В upGrad мы верим в то, что помогаем студентам со всего мира полностью раскрыть свой потенциал и добиться успеха в своей карьере. Наши курсы разработаны с учетом как новичков, так и опытных профессионалов.

Одним из таких курсов является связанная с работой сертификация PG в области разработки программного обеспечения от upGrad , специально разработанная для тех, кто впервые ищет работу. Ознакомьтесь с содержанием курса и запишитесь уже сегодня! Изучите все соответствующие навыки разработки программного обеспечения, такие как Java, DSA, OODAP, JavaScript, MERN, AWS и т. д., у отраслевых экспертов и ведущих специалистов.

В: Можно ли связать более двух конструкторов в Java?

Java допускает максимум две цепочки конструкторов. Таким образом вы можете создавать более сложные объекты и уменьшать дублирование кода.

В: Что происходит, когда конструктор в Java вызывает сам себя?

Конструктор в Java, который вызывает сам себя, приведет к ошибке переполнения стека и бесконечному циклу.

Q: Как выглядит конструктор по умолчанию в Java?

Конструктор по умолчанию в Java — это конструктор, который не принимает никаких входных данных. Если в классе не объявлен конструктор, он создается автоматически.