如果 subclass extends abstract class,clone 方法的语法是什么?
what the syntax for clone method if the subclass extends abstract class?
例如,class A 实现可克隆及其抽象 class,class B 扩展 class A。
假设我只在class B中需要克隆方法。
我还需要使用
A result = (A)super.clone();
在clone
方法中?
不,您可以将 clone()
in B
实现为:
public B clone() {
try {
return (B) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
注意:clone()
方法没有定义在Cloneable
接口中。 Cloneable
只是一个所谓的 'marker' 接口。所以 A
根本不需要 clone()
方法。
(您也可以将该方法声明为抛出 CNSE 并让调用者处理它。另请注意 clone()
和 Cloneable
这些天有些不受欢迎。考虑简单地提供一个副本构造函数而不是采用 B
并复制其字段的值。)
例如,class A 实现可克隆及其抽象 class,class B 扩展 class A。
假设我只在class B中需要克隆方法。 我还需要使用
A result = (A)super.clone();
在clone
方法中?
不,您可以将 clone()
in B
实现为:
public B clone() {
try {
return (B) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
注意:clone()
方法没有定义在Cloneable
接口中。 Cloneable
只是一个所谓的 'marker' 接口。所以 A
根本不需要 clone()
方法。
(您也可以将该方法声明为抛出 CNSE 并让调用者处理它。另请注意 clone()
和 Cloneable
这些天有些不受欢迎。考虑简单地提供一个副本构造函数而不是采用 B
并复制其字段的值。)