思想: 動態的拷貝原對象運行時的屬性, 原對象在運行時對屬性進行了修改後複製最新的屬性值到新對象(孫悟空-> 拔猴毛克隆多個猴子)
- 淺拷貝和深拷貝
- 淺拷貝: 克隆原型對象裏的引用數據類型屬性時, 克隆後的對象裏引用數據類型屬性是直接將指針指向原型的屬性地址, 這樣當原型的屬性發生變化那克隆後的也會受影響;
- 深拷貝: 將原型對象全部複製一份用新對象存儲;
- 克隆羊淺拷貝案例
- 正常方式克隆原型對象
- 實現Cloneable接口進行淺拷貝屬性克隆
- 兩種方式實現深拷貝
- 實現Cloneable接口且在clone()中單獨克隆引用數據類型的屬性;
- 當原型裏引用數據類型較多, 這種方法變的雞肋;
- IO流的方式序列化和反序列化;(推薦這種)
-
- Java中用到的地方
- Spring容器在加載bean時用到;