Java 如果子类扩展了抽象类,克隆方法的语法是什么?
例如,类A实现了可克隆,它是一个抽象类,类B扩展了类A 假设我只在类B中需要克隆方法。 我还需要使用吗Java 如果子类扩展了抽象类,克隆方法的语法是什么?,java,clone,Java,Clone,例如,类A实现了可克隆,它是一个抽象类,类B扩展了类A 假设我只在类B中需要克隆方法。 我还需要使用吗 A result = (A)super.clone(); 在clone方法中?否,您只需在B中实现clone(),如下所示: public B clone() { try { return (B) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalS
A result = (A)super.clone();
在
clone
方法中?否,您只需在B
中实现clone()
,如下所示:
public B clone() {
try {
return (B) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
注意:clone()
方法未在Cloneable
界面中定义Cloneable
只是一个所谓的“标记”接口。所以A
根本不需要clone()
方法
(您也可以声明方法为抛出CNSE并让调用方处理它。注意,<代码> CURONE()/代码>和<代码>可克隆< /代码>这几天有点不受欢迎。考虑简单地提供一个复制构造函数,而不是使用<代码> B/COD>并复制它的字段的值。)/P>可能的感谢的副本,所以,如果我在一个类中有一些变量,比如int,string,它会将它作为一个深度克隆方法复制吗?是否会创建一个新的B对象?@naor它会创建一个新的B对象并复制所有字段,甚至是在B超类(如a)中声明的字段,但对于深度克隆,如果它包含(例如)列表,克隆将获得列表引用的副本。因此,如果在原始列表中修改列表(例如,通过添加项目),更改也会出现在克隆中。