深拷贝 && 浅拷贝纠错
环境: jdk 8
Cat.java 代码如下
package app.zoo;
public class Cat implements Cloneable {
public String name;
public Cat(String name) {
this.name = name;
}
public void meow() {
System.out.println("喵喵喵~~~" + name);
}
@Override
public Object clone() {
Cat cat = null;
try {
cat = (Cat) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return cat;
}
}
Main.java 代码如下
package app;
import app.zoo.Cat;
public class Main {
public static void main(String[] args) {
Cat cat = new Cat("项羽");
Cat newCat = (Cat) cat.clone();
Cat simpleCat = cat;
cat.name = "张三";
cat.meow();
newCat.meow();
simpleCat.meow();
}
}
运行结果如下
喵喵喵~~~张三
喵喵喵~~~项羽
喵喵喵~~~张三
结论: 类实现 cloneable
接口为深拷贝,变量赋值为浅拷贝