不,您的尝试
public Point1(Point1 other){ _x = other._x ; _y = other._y;}绝对没问题…(我已经更正了参数类型。)
我很想进行make
_x和
_yfinal的操作,并且使该类final的操作,但这是因为我喜欢不可变的类型。其他人肯定有不同意见:)
在继承层次结构上进行克隆比较棘手-层次结构中的每个类都必须具有一个相关的构造函数,将其提供的任何参数传递给超类构造函数,然后仅复制其自己的字段。例如:
public class Point2 extends Point1 { private int _z; public Point2(Point2 other) { super(other); this._z = other._z; }}在实现方面这还不错,但是如果您要忠实地克隆a
Point2,则需要 知道 它是a
Point2才能调用正确的构造函数。
实现
Cloneable使这一过程变得更简单,但是还有其他事情要考虑…基本上,克隆对象并不像看起来的那么简单:)(我确定在Effective
Java中有一个条目可以实现) 。如果您没有副本,请立即购买。)



