Какова цель назначения глобальных переменных локальным переменным внутри Конструктора и сеттеров в одном классе? - PullRequest
0 голосов
/ 05 января 2019
 public class EmpRecord {
    private String name;
    private int id;

    public EmpRecord(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

В вышеприведенном классе, Setters предназначен для установки значения этих двух приватных переменных, но какова цель сделать то же самое внутри Конструктора? В чем разница между этими двумя - назначением глобальных переменных локальным внутри Конструктора, а также в Сеттере?

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Это не случай глобальной и локальной переменной . (Это параметризованный конструктор).

Каждый раз, когда вы создаете экземпляр класса, вы присваиваете значения его полям.

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

public EmpRecord(String name, int id) {
        this.name = name;
        this.id = id;
}

Объяснение:

всякий раз, когда вы создаете экземпляр класса EmpRecord , например:

EmpRecord obj = new EmpRecord("foo", 111);

Здесь вы прямо присваиваете значение foo для EmpRecord.name и 111 для EmpRecord.id .

Если вы этого не сделаете, тогда, если вы хотите присвоить значение, вам нужно сделать:

obj.setId(111);
obj.setName("foo");

Так что это не более чем присвоение значений полям во время создания экземпляра.

0 голосов
/ 05 января 2019

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

0 голосов
/ 05 января 2019

В конструкторе вы инициируете поле.

В установщике вы перезаписываете поле.

Для одного экземпляра вы можете запустить его только один раз, в то время как вы можете set несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...