将全局变量分配给构造函数内的局部变量和同一个 class 中的设置器的目的是什么?

What is the purpose of assigning global variables to local variables inside a Constructor and setters in the same class?

 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;
    }
}

上面的Class、Setter是用来给这两个Private变量赋值的,但是在Constructor里面这样做的目的是什么?这两者之间有什么区别-将全局变量分配给构造函数内部的局部变量以及 Setter?

在构造函数中,您正在启动字段。

在 setter 中,您正在覆盖该字段。

单个实例只能启动一次,但可以set多次。

这不是全局和局部变量的情况。(它是参数化构造函数)。

每当您同时创建 class 的实例时,您就是在为其字段赋值。

如果不这样做,则必须通过实例变量调用字段的 setter 方法。

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

解释:

每当您创建 class EmpRecord 的实例时,例如:

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

在这里,您直接将值 foo 分配给 EmpRecord.name,并将 111 分配给 EmpRecord.id

如果您不这样做,那么如果您希望分配值,那么您必须这样做:

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

所以无非就是在创建实例的时候给字段赋值而已

如果您在构造函数中进行初始化,那么一旦创建了对象,您将无法更改变量的值。如果您想在以后的某个时间点覆盖初始值怎么办?由于变量是私有的,因此您需要设置器。