2 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
調(diào)用Object.clone()時(shí),當(dāng)我們?cè)谧约旱念惱锔采wclone()時(shí),對(duì)于super.clone()來說是最關(guān)鍵的是:根類中的clone()方法負(fù)責(zé)建立正確的存儲(chǔ)容量,并通過“按位復(fù)制”將二進(jìn)制位從原始對(duì)象中復(fù)制到新對(duì)象的存儲(chǔ)空間。也就是說,它并不只是預(yù)留存儲(chǔ)空間以及復(fù)制一個(gè)對(duì)象——實(shí)際需要調(diào)查出欲復(fù)制之對(duì)象的準(zhǔn)確大小,然后復(fù)制那個(gè)對(duì)象。由于所有這些工作都是在由根類定義之clone()方法的內(nèi)部代碼中進(jìn)行的(根類并不知道要從自己這里繼承出去什么),所以大家或許已經(jīng)猜到,這個(gè)過程需要用RTTI判斷欲克隆的對(duì)象的實(shí)際大小。采取這種方式,clone()方法便可建立起正確數(shù)量的存儲(chǔ)空間,并對(duì)那個(gè)類型進(jìn)行正確的按位復(fù)制。

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
查看jdk api:按照慣例,返回的對(duì)象應(yīng)該通過調(diào)用 super.clone 獲得,一個(gè)類及其所有的超類(Object 除外)都遵守此約定
所以O(shè)bject不能調(diào)用clone(),可以按照下面方式
Test test = new Test();
test.clone();
添加回答
舉報(bào)