我有一个关于在构造函数中使用对象作为变量的问题。它可能很简单,但我真的想不出该怎么做,我的java书并没有真正帮助。说我想这样做
Fraction f3 = new Fraction(1, 2);
Fraction f5 = new Fraction(f3);
第一个对象的构造函数是:
public Fraction(int n, int d)
{
if (d == 0)
{
numerator = 0;
denominator = 1;
System.err.println("Error: Invalid Denominator (" + d + ")");
}
else if (d < 0)
{
int nn = Math.abs(n) * (-1);
numerator = nn;
denominator = Math.abs(d);
}
else
{
numerator = n;
denominator = d;
}
}
第二个对象的构造函数是:
public Fraction(Fraction f)
{
}
我想不出如何定义构造函数以使其将新对象设置为给定的对象。如果有人能给我一个手或者一些建议让我走上解决它的道路,我将非常感激。
答案 0 :(得分:6)
public Fraction(Fraction f){
this(f.numerator, f.denominator);
}
答案 1 :(得分:4)
我会使用“构造函数链接”来确保对其中的更改反映在另一个中。
// copy constructor
public Fraction(Fraction f) {
this(f.numerator, f.denominator); // call the regular constructor with f's params
}
答案 2 :(得分:2)
public Fraction(Fraction f){
this.n = f.n;
this.d = f.d;
}
答案 3 :(得分:1)
你想要的东西
Fraction a = .... ;
Fraction b = new Fraction(a);
System.out.println(a==b);
打印true
?这在Java中是不可能的; new
始终生成一个与所有先前存在的对象分开的新对象。
(这与ECMAScript相反,其中允许构造函数返回现有对象并丢弃运行时创建并作为构造函数this
传递的)新对象。