我对如何在 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,是用constructor没有setter方法,所以我不明白constructor和setter在使用上有什么区别,求指教,加油!
最佳答案
如果您想更改实例的 name
的值怎么办。当然,您不会为此使用构造函数,因为它会创建一个新实例。在这种情况下,您将使用 setter
。
当然,如果您正在编写一个不可变类,那么您将不会提供任何setter
。实例字段中的任何修改都将创建一个新实例。
这里要理解的更重要的一点是,由于您在第二个代码中提供了参数化构造函数,因此编译器不会添加任何默认构造函数。所以,第二类实际上没有任何 0-arg 构造函数。如果您想稍后使用它,则必须明确添加一个。
关于Java Setter 和 Constructor 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19163598/