【发布时间】:2019-07-03 20:00:57
【问题描述】:
为什么要使用它们?顺便说一句,我是初学者。我理解初始化值的默认构造函数,因为它具有逻辑意义,但为什么要使用带参数的构造函数来表示实例变量 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 = "";
}
}
【问题讨论】:
-
考虑一个需要设置值才能有意义构造的对象。在这种情况下,您需要一个参数化构造函数而不需要非参数化构造函数,因此需要使用代码来提供值。
-
@DWuest
this关键字是可选的,因为局部变量的命名不同。 -
您需要它来初始化您正在初始化的实例变量。您不需要的是默认构造函数中将它们初始化为默认值的代码:
age = 0;. -
你的例子很好。如果您没有添加带有参数的构造函数,那么“MyCats”将永远不会有名称,并且它们的年龄都为“0”。多亏了那个参数化的构造函数,你的猫可以有实际的名字,而不是保持无名!对我来说,这就是足够的理由! (当然:不同的方法来实现这一点 - 你找到了),
标签: java parameters constructor