java如何實(shí)現(xiàn)對(duì)象克隆 java中的clone方法?
java中的clone方法?因?yàn)樵趈ava.lang.Object對(duì)象在類的定義中,clone()受保護(hù)。根據(jù)受保護(hù)的訪問控制范圍,它只能是當(dāng)前類、當(dāng)前包或其他包的子類。注意這里的“accessibl
java中的clone方法?
因?yàn)樵趈ava.lang.Object對(duì)象在類的定義中,clone()受保護(hù)。根據(jù)受保護(hù)的訪問控制范圍,它只能是當(dāng)前類、當(dāng)前包或其他包的子類。注意這里的“accessible”是通過原始對(duì)象訪問的。
Java中clone方法的疑問?
因?yàn)樵趈ava.lang.Object對(duì)象在類的定義中,clone()是受保護(hù)的,根據(jù)受保護(hù)的訪問控制范圍,只能在當(dāng)前類、當(dāng)前包或其他包的子類中訪問。
請(qǐng)注意,此處的“可訪問”是通過原始對(duì)象訪問的。
您可能認(rèn)為代碼中的obj滿足“其他包的子類”的條件。錯(cuò)了。一旦有新產(chǎn)品問世,就超出了范圍。Super仍然是原始對(duì)象,因此可以訪問父類基類甚至對(duì)象的受保護(hù)的clone()方法。
在java中clone為什么要用super.clone()方法這里為什么要用super不是this?
實(shí)現(xiàn)了可克隆接口,該接口是證明該類可以被克隆并可以調(diào)用object的clone方法的令牌,而超級(jí)克?。ǎ┦强寺‘?dāng)前對(duì)象,這里是super。調(diào)用父類的clone方法實(shí)現(xiàn)淺層克隆,即只克隆當(dāng)前對(duì)象,不克隆當(dāng)前對(duì)象的子對(duì)象。至于克隆方法的實(shí)現(xiàn),我從來都不知道。我只知道它是用反射機(jī)制實(shí)現(xiàn)的。當(dāng)前對(duì)象可以完全復(fù)制,但是因?yàn)榉祷刂凳莖bject,所以需要強(qiáng)制類型