使用.Clone()方法克隆对象与使用=Sign克隆对象有什么不同?

2022-04-08 00:00:00 clone methods java cloning

我真的搞不懂.clone()方法和试图克隆对象时简单地在对象之间放置=号有什么区别。

谢谢。


解决方案

如果创建新狗:

Dog a = new Dog("Mike");

然后:

Dog b = a;
您将有一个Dog和两个引用相同Dog的变量。因此正在做:

a.putHatOnHead("Fedora");

if (b.hasHatOnHead()) {
    System.out.println("Has a hat: " + b.getHatName());
}

将打印狗有一顶Fedora帽子,因为ab指的是同一只狗。

相反,执行以下操作:

Dog b = a.clone();

现在您有两个克隆狗。如果你给每只狗戴上帽子:

a.putHatOnHead("Rayden");
b.putHatOnHead("Fedora");

每只狗都有自己的帽子。

相关文章