使用.clone()方法和=符号克隆对象有什么区别?

Rob*_*ert 5 java methods clone cloning

我真的很困惑.clone()方法之间的区别是什么,或者只是=在尝试克隆它时在对象之间放置符号.

谢谢.

vz0*_*vz0 18

如果你创建一个新狗:

Dog a = new Dog("Mike");
Run Code Online (Sandbox Code Playgroud)

然后:

Dog b = a;
Run Code Online (Sandbox Code Playgroud)

你有一个Dog和两个引用相同的变量Dog.因此做:

a.putHatOnHead("Fedora");

if (b.hasHatOnHead()) {
    System.out.println("Has a hat: " + b.getHatName());
}
Run Code Online (Sandbox Code Playgroud)

将打印出该狗有一顶Fedora帽子,因为ab引用同一条狗.

相反,做:

Dog b = a.clone();
Run Code Online (Sandbox Code Playgroud)

现在你有两只狗克隆.如果你在每条狗上戴上帽子:

a.putHatOnHead("Rayden");
b.putHatOnHead("Fedora");
Run Code Online (Sandbox Code Playgroud)

每只狗都有自己的帽子.