Cloneable接口的作用是標識一個類可以被克隆。當一個類實現了Cloneable接口,就表示該類可以創建一個與自身相同的對象。
深度克隆(Deep Clone)和淺度克隆(Shallow Clone)是兩種不同的克隆方式:
深度克隆:深度克隆是指將一個對象復制一份,并且這份復制與原對象沒有任何關聯。也就是說,當修改原對象時,不會影響到克隆對象,反之亦然。深度克隆會復制對象的所有引用類型,包括其引用類型的引用類型,以此類推,直到所有引用類型都被復制。
淺度克隆:淺度克隆是指將一個對象復制一份,但是這份復制與原對象共享相同的引用類型。也就是說,當修改原對象時,會影響到克隆對象,反之亦然。淺度克隆只會復制對象的基本類型和引用類型的引用,而不會復制引用類型的引用類型。
需要注意的是,實現Cloneable接口只是表示該類可以被克隆,并不提供克隆的具體實現。具體的克隆操作需要在實現類中重寫Object類的clone方法,并根據需要進行相應的深度克隆或淺度克隆操作。
總結起來,Cloneable接口的作用是標識一個類可以被克隆,深度克隆是創建一個與原對象完全獨立的克隆對象,而淺度克隆是創建一個與原對象共享引用類型的克隆對象。