使用构造函数初始化数据成员时,为什么需要“set”方法

时间:2011-01-13 17:38:24

标签: java constructor

当我们使用构造函数隐式初始化数据成员时,为什么我们在大多数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?感谢您的耐心和时间。

4 个答案:

答案 0 :(得分:6)

因此,您可以在初始化后更改值

答案 1 :(得分:3)

它允许从类外部更改值。删除setter会使字段不可变。

答案 2 :(得分:2)

如果初始化后不需要更改值,则不需要。 实际上,如果不改变值,最好不要实现setter方法。

答案 3 :(得分:0)

您可能希望将该类出售给可能想要设置该值的其他人。

或者,您可能希望将来实现一些更改,因此您现在可以编写set()方法,这样您就不必担心了。

甚至,代码可能是由某种自动代码生成工具生成的,默认情况下包含setter。

要回答标题中的问题,这不是必需的。你可以把它拿出来,代码就可以编译得很好。