我不了解使用构造函数Rational()创建Rational对象时会发生什么。我的书说它将创建一个Rational对象,其值为0但内部存储为0/1。这个(0)如何存储为0/1?不是num和den 0的实例变量的默认值吗?
public class Rational{
public Rational(){
this(0);
}
public Rational(int n){
this(n,1);
}
public Rational(int x, int y){
num = x;
den = y;
}
private int num;
private int den;
}
答案 0 :(得分:5)
术语
Rational r = new Rational();
致电
public Rational(){
this(0);
}
调用
public Rational(int 0){
this(0,1);
}
调用
public Rational(int 0, int 1){
num = 0;
den = 1;
}
这意味着你的最终对象将是Rational(0,1);
答案 1 :(得分:3)
this
指的是当前对象。
<强>但是强>
this()
将调用默认构造函数的当前类构造函数。
this(val)
将使用一个参数调用类构造函数...
this(val1,val2)
使用两个参数调用类构造函数...
现在,如果你只调用this()
但是你已经用这样的方式编写了构造函数,你可能已经调用了其他函数(withArg)。像下面..所以你也可以写嵌套的方式。
public Rational(){
this(0);
}
1)this关键字可用于引用当前的类实例变量。
public Rational(int num, int den){
this.num = num;
this.den = deb;
}
2)this()可用于调用当前类构造函数。
public Rational(int num, int den){
this(num);
this.den = deb;
}
3)this关键字可用于调用当前类方法(隐式)。
public Rational(){
this.someMethod();
}
答案 2 :(得分:2)