Конструкторы с геттерами и сеттерами и их работа

170
01 марта 2019, 01:50

Друзья! Я понял как работают сеттеры, геттеры и конструкторы. Но не понял одну вещь:

public class Person {
    private String name;
    public Person(String name){
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class User {
    public static void main(String[] args) {
        Person person = new Person("Василий");
        System.out.println(person.getName()); 
        person.setName("Леонид");
        System.out.println(person.getName());
    }
}

Зачем нам сеттеры, если можно указать всё в конструкторе (в параметрах)? Может, есть какие-то подводные камни или разные ситуации?

Answer 1

Через конструктор указывается начальное значение. Такой способ инициализации гарантирует установку значений при создании объекта и сокращает код инициализации этого объекта (не нужно дополнительно вызывать сеттеры). Сеттером же начальные значения можно изменить в процессе жизни объекта, иначе пришлось бы создавать новый объект через конструктор, что часто неприемлемо. Ну и геттером, понятно, получить текущее значение

Answer 2

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

READ ALSO
RecyclerView к списку элементов

RecyclerView к списку элементов

Проблема следующего характера, создал список checkBox-ов при помощи recyclerView, наполняю его следующим образом:

177
Нужно ли добавлять медиа-запрос, если ширина экрана <= 260px?

Нужно ли добавлять медиа-запрос, если ширина экрана <= 260px?

Недавно начал практиковаться в медиа-запросахНужно ли добавлять медиа-запрос, если ширина экрана <= 260px? Существуют ли вообще устройства...

172
Не работает JS. Не выводит &lt;input value&gt;

Не работает JS. Не выводит <input value>

Застрял на элементарном, не могу понять почему так

187
Как сменить слайд OWl по index&#39;у?

Как сменить слайд OWl по index'у?

сделал кастомные thumbnailsIndex thumbnail = index slide

204