2 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
Object類的方法:
protected native Object clone() throws CloneNotSupportedException;
1、如果不實(shí)現(xiàn)clone,那么執(zhí)行到House house2 = (House)house1.clone(); 會(huì)報(bào)錯(cuò),因?yàn)镠ouse沒有clone方法,不能克隆。
將clone()修飾符改為public,是因?yàn)檫@樣可以在外部調(diào)用house.clone(),否則重載就沒有意義。
2、如果去掉try...catch...,編譯return super.clone();會(huì)報(bào)錯(cuò),因?yàn)閟uper.clone()定義時(shí)聲明了異常,所以在調(diào)用時(shí),必須捕獲這個(gè)異常。如果不捕獲,在House.clone()方法聲明也可以:
public Object clone() throws CloneNotSupportedException;
這樣,你在調(diào)用house.clone()時(shí)就必須try...catch...

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
e house2 = (House)house1.clone();
要使用這個(gè)就必須實(shí)現(xiàn)cloneable接口,不實(shí)現(xiàn)就報(bào)錯(cuò)
Object的現(xiàn)實(shí)是if(!this instanceof Cloneable){throw new CloneNotSupportedException();}
- 2 回答
- 0 關(guān)注
- 409 瀏覽
添加回答
舉報(bào)