0

我只是想知道普通构造函数和突变体之间的区别是什么?它们似乎都有相同的目的 - 为私有变量分配某些值。在特定情况下是否有一定的优势?谢谢

4

2 回答 2

2

区别在于:

  • 构造函数的私有变量被分配为创建新对象过程的一部分
  • 构造函数通常会分配多个变量……精心设计的 mutator 可能不会这样做。
  • (正如@irreputable 提醒我的那样),构造函数可以(并且必须)将值分配给“空白”final变量......这是突变体无法做到的。

还值得注意的是:

  • 构造函数可以调用 mutators(例如 setter)来进行赋值,并且
  • 您可以在构造函数中保留未初始化的变量,并期望/要求作为new实例的代码然后使用 mutator 来完成初始化。

那么除此之外,它们有相同的目的吗?

不,构造函数的目的是创建一个新对象。mutator 的目的是更改现有对象。

于 2013-03-10T02:26:50.170 回答
2

构造函数可以分配一个final变量。二传手不能。

setter 可以有一个更具描述性的名称,例如

new Foo(25);
vs
foo.setAge(25);
于 2013-03-10T02:35:54.753 回答