参数化构造函数的目的是什么?

时间:2019-02-09 23:03:46

标签: java parameters constructor

为什么要使用它们?顺便说一下,我是一个初学者。我理解初始化值的默认构造函数,因为它在逻辑上是合理的,但是为什么使用带有参数的构造函数来表示实例变量age例如等于a。目的是什么?没有它,只有初始化构造函数会发生什么?在这里问的其他问题没有意义 例如:

public class MyCats {
    private int age;
    private String name;

 public MyCats(int a, String n) {  // why do I need this?
    age = a;
    name = n;
 }

 public MyCats() {
   age = 0;
   name = "";
 }
}

1 个答案:

答案 0 :(得分:6)

这是为了轻松创建类而无需额外的代码。例如,不要这样做:

request.auth.uid

您可以这样做:

MyCats a = new MyCats();
a.setAge(12);
a.setName("Foo");

更简单,哼?

如果简短程度不够,您可能更喜欢稍后的其他原因:

  • 您可以使用提供的值来初始化所有依赖于构造函数中多个字段的计算字段。
  • 即使参数需要多个参数的检查,也可以在参数无效的情况下验证输入和引发的异常。
  • 如果您的字段是最终字段并且您的班级是不可变的,那么您必须这样做,在这种情况下,没有设置器。

通常在最后一种情况下,能够在构造时检查正确性并禁止任何对象处于无效状态非常有用,以后可以节省很多错误。