我对如何在Java中使用构造函数和setter感到困惑,请参阅下面的示例代码:
public class Name {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
public static void main(String[] args) {
Name a=new Name();
a.setName("123");
System.out.println(a.getName());
}
它打印出123,它使用没有构造函数的setter方法,我还编写了下面的其他代码:
public class Name {
private String name;
public Name(String nm){
name=nm;
}
public String getName(){
return name;
}
}
public static void main(String[] args) {
Name a=new Name("123");
System.out.println(a.getName());
}
这个也打印出123,它是使用没有setter方法的构造函数,这就是为什么我不明白构造函数和setter之间使用的区别,请指教,欢呼!
解决方法:
如果要更改实例的名称值,该怎么办?当然,你不会使用构造函数,因为它会创建一个新实例.在这种情况下你会使用一个setter.
当然,如果你正在编写一个不可变类,那么你就不会给任何setter.实例字段中的任何修改都将创建一个新实例.
这里要理解的另一个重点是,由于您在第二个代码中提供了参数化构造函数,因此编译器不会添加任何默认构造函数.所以,第二类实际上没有任何0-arg构造函数.如果您想稍后使用它,那么您必须明确添加一个.