Страницы

Поиск по вопросам

четверг, 11 апреля 2019 г.

делегирование конструкторов в Java

Здравствуйте! Сколько ни разбирался, не могу понять, что значит делегирование конструкторов в Java. Прошу помощи разобраться в этом моменте. Спасибо.


Ответ

Все просто - это когда один конструктор может быть вызван другим конструктором изнутри класса с использованием ключевого слова this и списка аргументов.
Например, есть класс Person и есть конструктор, в котором параметры имя и возраст.
class Person { private String name; private String age; private String email;
public Person(String name, String age) { this.name = name; this.age = age; } }
Допустим мы хотим еще конструктор, но у которого параметры будут имя, возраст и email. Вместо того, чтобы дублировать код из первого конструктора и дописывать еще параметр, типа такого:
public Person(String name, String age, String email) { this.name = name; this.age = age; this.email = email; }
достаточно вызвать другой конструктор с параметрами, а остальное сделать в данном:
class Person { private String name; private String age; private String email;
public Person(String name, String age) { this.name = name; this.age = age; }
public Person(String name, String age, String email) { this(name, age); this.email = email; } }
А вот еще захотел я конструктор добавить)) Сколько тут дубля можно избежать, можно представить.
class Person { private String name; private String age; private String email; private String sex;
public Person(String name, String age) { this.name = name; this.age = age; }
public Person(String name, String age, String email) { this(name, age); this.email = email; }
public Person(String name, String age, String email, String sex) { this(name, age, email); this.sex = sex; } }
Таким образом вместо захламления дублем, копипаста кода в еще один конструктор - мы даем часть обязанностей в конструктор, который уже делает подобные вещи.
Если, например, есть штук 5 конструкторов с разными и множеством параметров - не придется копипастить код везде, а лишь перенаправить некоторые вещи с одного конструктора в другой.

Комментариев нет:

Отправить комментарий