package test;public class C extends Object {void test() {Object object = new Object();object.clone();//The method clone() from the type Object is not visible}}
2 回答

慕碼人2483693
TA貢獻1860條經驗 獲得超9個贊
Object類對象是無法被clone的,至少當引用obj被聲明為Object類的時候,你不能這么做...
因為Java中并不是所有的類都可以被克隆(而且JDK中還描述說不能保證某些類clone的結果x.clone()!=x絕對成立),所以Object類對象無法調用clone()...
還有super不是指Object而是指其父類的引用。
由于clone是object類的一個protected方法,代碼中不能直接調用它
子類只能受保護的clone方法克隆他自己,為此必須重新定義clone方法,
并將其設為public,一般情況下,建議實現cloneable標記接口,并通過調用super.clone()方法。

慕斯王
TA貢獻1864條經驗 獲得超2個贊
你要用clone()方法,必須將C實現Cloneable標記接口才可以,我覺得你應該這個測試
public class C extends Object implements Cloneable{
void test() {
C c= new C();
C c2=(Object) c.clone();//The method clone() from the type Object is not visible
}
}
- 2 回答
- 0 關注
- 219 瀏覽
添加回答
舉報
0/150
提交
取消