【发布时间】:2015-04-23 22:43:53
【问题描述】:
我在听我的 Java 课程 (Java I) 的讲座时,得到了一张参考表来打印。这不是家庭作业,它只是用来了解对象、类和构造函数的东西。我的问题是,是否需要多个构造函数?第一个只是声明所有变量,第二个初始化它们。这不能在一个构造函数中完成吗?这是构造函数的代码。非常欢迎您编写一个示例或只是帮助我理解我在看什么。我对构造函数很陌生。
public class Puppy
{
private String name; // puppy's name
private String breed; // breed of dog
private int age; // chronological age of dog
private String vet; // name of vet
public Puppy()
{
name = " ";
breed = " ";
age = 0;
vet = " ";
} // end of Puppy constructor
// method initializing data fields to specific values
public Puppy(String n, String b, int a, String v)
{
name = n;
breed = b;
age = a;
vet = v;
} // end of Puppy constructor
【问题讨论】:
-
引用类型(如字符串)的默认值为“null”。这与空字符串不同。第一个构造函数确保名称和品种等内容具有空字符串值而不是空值。 如果这是必要的,但通常在定义字段时内联完成。
-
第一个将使用构造函数中使用的硬编码值初始化对象,然后使用第二个构造函数,您可以传入您自己的值并创建具有该值的对象。
-
似乎不需要第一个构造函数——因为变量可以在声明时初始化为默认值。也就是说,有些框架和工具要求您显式声明一个空的构造函数。如果使用这样的工具/框架 - 它可以解释它。
-
另外,第一个构造函数的代码也可以是
this(" ", " ", 0, " ");。这样,您可以将第二个构造函数视为“基础”。如果用户没有提供任何值,您只需创建一个“默认”Puppy 对象。 -
构造函数参数的命名当然可以更清楚。使用
name之类的参数名称,然后分配this.name = name之类的字段可以提高可理解性。
标签: java object constructor