将全局变量分配给构造函数内的局部变量和同一个 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");
所以无非就是在创建实例的时候给字段赋值而已
如果您在构造函数中进行初始化,那么一旦创建了对象,您将无法更改变量的值。如果您想在以后的某个时间点覆盖初始值怎么办?由于变量是私有的,因此您需要设置器。
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");
所以无非就是在创建实例的时候给字段赋值而已
如果您在构造函数中进行初始化,那么一旦创建了对象,您将无法更改变量的值。如果您想在以后的某个时间点覆盖初始值怎么办?由于变量是私有的,因此您需要设置器。