Страницы

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

суббота, 8 февраля 2020 г.

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

#java


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


Ответы

Ответ 1



Все просто - это когда один конструктор может быть вызван другим конструктором изнутри класса с использованием ключевого слова 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 конструкторов с разными и множеством параметров - не придется копипастить код везде, а лишь перенаправить некоторые вещи с одного конструктора в другой.

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

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