我试图创建一个克隆方法,该方法将采用已经创建的Rational并制作副本,以便在我的主要内容中我可以执行以下操作:
Rational r3 = new Rational(r1);
到目前为止,我在Rational类中创建了一个方法,它将一个rational作为参数;但是我不确定如何让新实例看起来就像参数一样。
public Rational copy(Rational aRational) {
int newNum = aRational.n;
int newDenom = aRational.d;
return (new Rational(newNum, newDenom));
}
非常感谢任何帮助或见解!!
答案 0 :(得分:3)
在我的主要内容中[我想]做这样的事情:
Rational r3 = new Rational(r1);
这不是克隆,这是一个以Rational
为参数的构造函数。你可以这样做:
public Rational(Rational other) {
n = other.n;
d = other.d;
}
这将允许您使用代码从现有实例构建Rational
的新实例。
注意:您的班级中的n
和d
似乎都会作为公共变量向您的班级用户展示。这并不理想,因为您无法控制类的用户可能对其实例变量所做的修改。更好的方法是使它们private
,并为您的类添加getter和setter。这种方法可以让你检测将分母设置为零的尝试,这可能是理想的。