通过一个实例对象 生成另一个对象,称为 拷贝。
需要 实现
java.lang.Cloneable
该接口是一个 标记接口
通过调用 clone() 方法,完成 对象拷贝。该方法是Object类中的方法,所有对象都继承该方法。
clone()方法是 浅拷贝,也就是 只 将 对象 中的 字段 值 进行复制:
1. 如果值 是 基本类型,那么就是 copy 一份 该值
2. 如果值 是 引用类型,那么就是 copy一份该引用,那么,此时,新对象和老对象 都持有 该引用,其中一方修改改引用对象的数据,另一方也是拿到最新修改的值。
3. clone 方法 不会调用 构造函数

public class CloneTest implements Cloneable {
    private Cat cat;
    private String name;
    public Cat getCat() {
        return cat;
    }
    public void setCat(Cat cat) {
        this.cat = cat;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public CloneTest(Cat cat, String name) {
        this.cat = cat;
        this.name = name;
        System.out.println("CloneTest构造函数");
    }
    public static void main(String[] args) throws Exception{
        Cat ori_cat = new Cat("ori cat");
        CloneTest cloneTest = new CloneTest(ori_cat, "ori-clonetest");
        CloneTest clone = (CloneTest)cloneTest.clone();
        clone.getCat().setName("clone cat");
        System.out.println(cloneTest.getCat().getName());
    }
}
我们经常用的 BeanUtils进行对象属性copy,也是浅拷贝
org.springframework.beans.BeanUtils#copyProperties(java.lang.Object, java.lang.Object)
        Cat ori_cat = new Cat("ori cat");
		OriClass ori_class = new OriClass("ori class", ori_cat);
		TarClass tarClass = new TarClass();
		BeanUtils.copyProperties(ori_class,tarClass);
 




![[Pytorch]导数与求导](https://img-blog.csdnimg.cn/3d4162d08a624b87a14239b65c1ff381.jpeg)














