【发布时间】:2013-07-30 08:06:06
【问题描述】:
我对 getter/setter 和构造函数的使用有点困惑(请参阅下面的代码示例)
public class ExampleClass {
private int value = 0;
public ExampleClass () {
value = 0;
}
public ExampleClass (int i) {
this.value = i;
}
public int getValue() {
return value;
}
public void setValue(int val) {
this.value = val;
}
public static void main(String[] args) {
ExampleClass example = new ExampleClass (20);
example.setValue(20);
//Both lines above do same thing - why use constructor?
System.out.println(example.getvalue());
}
}
我所知道的是,我们需要 getter/setter 以确保安全,并且它们也可以用于以后更改或编辑值。
我的问题是,如果构造函数是初始化点并且始终存在默认构造函数,为什么要使用带参数的构造函数而不是 getter/setter 来初始化值?。不会使用 getter 和 setter 提供安全性以及能够在任何阶段轻松更改值。请为我澄清这一点。
【问题讨论】:
-
构造函数用于在创建对象时初始化值。例如 int 的默认值为 0。如果要创建 int 参数值不为 0 的实例,可以使用构造函数。
-
如果你使用setter,它们实际上是方法,所以如果你有多个setter,那么最好使用构造函数。如果您为多个变量调用 setter 将比将它们都传递给一个构造函数并仅在一种方法中设置它们要慢。在这种情况下,构造函数比多个 setter 更快,显然它们都有多个优点,决定权在你。
标签: java class constructor setter getter