我正在研究构造函数,并通过了此示例
public class Time2
{
private int hour;
private int minute;
private int seconds;
public Time2()
{
this(0, 0, 0)
}
}
第二种方法是
public class Time2
{
private int hour;
private int minute;
private int seconds;
public Time2()
{
}
}
在第二种方法中,我没有使用this(0,0,0)
。以这种方式使用它们有什么区别?
如果我想在其中添加自变量怎么办?
public Time2(int hour)
{
this(hour, 0, 0);
}
为什么我们需要添加null
或0
而不是完全不添加任何内容?
答案 0 :(得分:1)
您必须提供一个重载/参数化的构造函数,才能在默认构造函数中使用它:
public class TimeTwo {
private int hour;
private int minute;
private int seconds;
public TimeTwo() {
/*
* the overloaded constructor is used here,
* you have to write this(...) because
* you want to initialize the current object
*/
this(0, 0, 0);
}
public TimeTwo(int hour, int minute, int second) {
this.hour = hour;
this.minute = minute;
this.seconds = second;
}
}
设置默认值的另一种方法可以这样做:
public class TimeTwo {
private int hour;
private int minute;
private int seconds;
public TimeTwo() {
this.hour = 0;
this.minute = 0;
this.seconds = 0;
}
}
甚至还有第三种设置默认值的可能性:
public class TimeTwo {
private int hour = 0;
private int minute = 0;
private int seconds = 0;
public TimeTwo() {}
}
答案 1 :(得分:0)
public Time2()
{
this(0,0,0)
}
和
public Time2()
{
}
如果Time2(int hour,int minute,int seconds)
构造函数仅将传递给它的值分配给3个实例变量(小时,分钟和秒),则将具有相同的行为,因为这些实例变量将通过以下方式获得0
值默认。
另一方面,如果Time2(int hour,int minute,int seconds)
构造函数包含一些其他逻辑(例如,计算其他实例变量的值),则无参数构造函数的这两种实现将具有不同的行为。