Java 将对象用作构造函数的变量
我有一个关于在构造函数中使用对象作为变量的问题。这可能很简单,但我真的想不出该做什么,我的java书也帮不上什么忙。说我想这么做Java 将对象用作构造函数的变量,java,object,constructor,Java,Object,Constructor,我有一个关于在构造函数中使用对象作为变量的问题。这可能很简单,但我真的想不出该做什么,我的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;
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){
this.n = f.n;
this.d = f.d;
}
Fraction a = .... ;
Fraction b = new Fraction(a);
System.out.println(a==b);
打印true
?这在Java中是不可能的<代码>新建始终生成一个与所有以前存在的对象分离的新对象
(这与ECMAScript相反,ECMAScript允许构造函数返回现有对象并丢弃运行时创建并作为构造函数的This
传递的新对象)。我将使用“构造函数链接”来确保对一个对象所做的更改反映在另一个对象中
// copy constructor
public Fraction(Fraction f) {
this(f.numerator, f.denominator); // call the regular constructor with f's params
}
当然,这假设“分子”和“分母”被定义为细分的公共成员。我不建议这样做——如果逻辑发生变化,你很快就会发现一个bug。@TravelingTechGuy不,因为你在文件中。您可以完全访问同一类的成员,即使他们不是
此
对象的成员。@Tech Guy。不,因为构造函数在分数中,所以它可以看到所有可见的成员。谢谢。它工作得很好。我已经为分子和分母设置了实例变量。如果n=-1,d=-1,分子设置为-1,分母设置为1,这是故意的吗?请注意,Math.abs
只测试“参数”
Fraction a = .... ;
Fraction b = new Fraction(a);
System.out.println(a==b);
// copy constructor
public Fraction(Fraction f) {
this(f.numerator, f.denominator); // call the regular constructor with f's params
}