1

我正在尝试创建一个克隆方法,该方法将采用已经创建的 Rational 并制作一个副本,以便在我的 main 中我可以执行以下操作:

Rational r3 = new Rational(r1);

到目前为止,我在我的 Rational 类中创建了一个将有理数作为参数的方法;但是我不确定如何使新实例看起来像参数。

public Rational copy(Rational aRational) {
int newNum = aRational.n;
 int newDenom = aRational.d;
 return (new Rational(newNum, newDenom));

}

非常感谢任何帮助或见解!

4

1 回答 1

3

在我的主要我[想要]做这样的事情:Rational r3 = new Rational(r1);

这不是克隆,而是创建一个以 aRational作为参数的构造函数。你可以这样做:

public Rational(Rational other) {
    n = other.n;
    d = other.d;
}

这将允许您使用代码Rational从现有实例构造新实例。

注意:看起来你的班级nd你的班级都作为公共变量暴露给你班级的用户。这并不理想,因为您无法控制类的用户可能对其实例变量进行的修改。更好的方法是制作它们private,并将 getter 和 setter 添加到您的类中。这种方法可以让您检测将分母设置为零的尝试,这可能是可取的。

于 2014-04-21T21:19:02.533 回答