在Java中所有的类都是Object的子类。
在Object类中有一个clone方法定义如下:
protected native Object clone() throws CloneNotSupportedException;
该方法的修饰符为protected,表示该方法可以在子类中调用
然后结果是调用不了
网上有回答是需要实现Cloneable接口,但即使实现了,也调用不到。
不实现Cloneable接口,只是报CloneNotSupportedException异常。
只能重写clone方法,并且使用super.clone()
疑惑这是为什么呢?
Cloneable介面只是個標誌,他裡面是空的
Object的clone方法是本地方法,比較有效率
使用clone方法的幾個條件
2)為了取得物件的一份拷貝,我們可以利用Object類別的clone方法。
3)在衍生類別中覆寫累積的clone方法,宣告為public。
4)在衍生類別的clone方法中,呼叫super.clone()。
再具體的可以參考
http://www.cnblogs.com/gw811/...
可以呼叫啊:
clone() 是protected的作用域。繼承Cloneable介面後要重寫方法,然後在方法裡呼叫父類別的clone()的方法。同時預設的克隆對於引用物件只是淺克隆。給你一段程式碼自己去運行試試看:
其中A繼承了cloneable接口,同時持有了對B的引用。
實作介面Cloneable,重寫clone()方法。
剛剛看我也很疑惑,試了一下,發現是直接呼叫object中的clone方法的。
程式碼如下:
public class CommonTest implements Cloneable{
}