当我们使用构造函数隐式初始化数据成员时,为什么我们在大多数Java类中都需要set方法。
public class Foo
{
private int id;
private String name;
public Foo(int id, String name)
{
this.id=id;
this.name=name;
}
public void setId(int a)
{
id=a;
}
public int getId()
{
return id;
}
}
并且,假设我有一个像这样实例化Foo的应用程序:
Foo obj1 = new Foo(2, "Example1");
当我在构造函数调用期间初始化它时,为什么我需要setId
类中的Foo
?感谢您的耐心和时间。
答案 0 :(得分:6)
因此,您可以在初始化后更改值。
答案 1 :(得分:3)
它允许从类外部更改值。删除setter会使字段不可变。
答案 2 :(得分:2)
如果初始化后不需要更改值,则不需要。 实际上,如果不改变值,最好不要实现setter方法。
答案 3 :(得分:0)
您可能希望将该类出售给可能想要设置该值的其他人。
或者,您可能希望将来实现一些更改,因此您现在可以编写set()方法,这样您就不必担心了。
甚至,代码可能是由某种自动代码生成工具生成的,默认情况下包含setter。
要回答标题中的问题,这不是必需的。你可以把它拿出来,代码就可以编译得很好。