Нужен ли конструктор, если я использую Getter() and Setter()?

108
14 декабря 2021, 16:50

Если при создания сущности, его поля я инициализирую с помощью геттеров и сеттеров, нужен ли мне в таком случае конструктор?

package Family;
public class Dad {

    private String name;
    private int age;
    private String keyPhrase;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = "Big Dad";
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = 45;
    }
    public String getKeyPhrase() {
        return keyPhrase;
    }
    public void setKeyPhrase(String keyPhrase) {
        this.keyPhrase = "Ломать и крушить!";
    }

    private String say(){
        return "Меня зовут " + getName() + ", и мне " + getAge();
    }
    private String phrases(){
        return getKeyPhrase();
    }
    private void kick(){ //Суперспособность Удар
    }
    private void laserEyes(){ //Суперспособность Летать
    }
    private void fly(){ //Суперспособность Полет
    }
}
Answer 1
public void setName(String name) {
        this.name = "Big Dad";
    }

Зачем вы в параметрах вообще тогда запрашиваете String. Если имя всё равно будет Big Dad. Если придерживаться данной концепции, будущий ваш коллега будет долго ломать голову, почему при любом setName у всех одно и то же имя!

Так делать ни в коем случае нельзя! Для подобных случаев вам необходимо указать пустой конструктор где

class Dad(){
this.name = "Big Dad";
this.age = 45;
}
Answer 2

Вам нужен в этом случае конструктор только для того, чтобы вы знали, что если объект создан, то переменные, которые должны быть инициализированы, уже инициализированы. В случае с пустым конструктором, вы не можете быть уверены в том, что они инициализированы. Если не обязательно инициализировать некоторые поля или вам не нравится то, что список параметров слишком длинен, воспользуйтесь паттерном "строитель". Если вам не нравится то, что список параметров слишком длинен - паттерн "замена параметров объектом" также вам поможет.
Если же вам нужно инициализировать константы - язык java даст вам это сделать только в конструкторе(и в блоке инициализации). Что логично

READ ALSO
Преобразовать json в java класс

Преобразовать json в java класс

Как мне преобразовать такой вот json в Java класс с помощью GSON ?

200
Как убрать крайне правый знак в строке ;

Как убрать крайне правый знак в строке ;

Здраствуйте уважаемые форумчанеНа днях начал разрабатывать свой калькулятор на Java и не смог найти нужную в интернете информацию о том как...

90
Задать фон на всю ширину и высоту экрана

Задать фон на всю ширину и высоту экрана

Я новичок в верстке хотел узнать, тк

195