gpt4 book ai didi

java - 将一个对象设置为与另一个对象相等时的困惑

转载 作者:行者123 更新时间:2023-12-01 06:44:16 25 4
gpt4 key购买 nike

假设我有一个 Dog 类,我创建了 Dog 的两个实例,如下所示:

Dog dog1 = new Dog();

Dog dog2 = dog1;

如果我使用

dog1.shower();

dog2 也会执行该调用吗?如果是这样,我如何防止 dog2 调用相同的方法?

最佳答案

通过编写 Dog dog2 = dog1;,您声明了一个引用 dog2,它将指向与 dog1< 相同的对象.

因此,调用 dog1.shower();dog2.shower(); 将导致相同的行为(调用 shower() 方法在同一个 Dog 对象上)。

如果你写

Dog dog2 = new Dog();

您让您的 dog2 引用另一个新创建的 Dog 对象。

编辑
如果您需要 dog2 引用不同的 Dog 并获得 dog1 的所有品质,您有以下选择:

  • 创建 copy constructor正如克里斯建议的那样。完成此操作后,您可以编写:

    // dog2 refers to new copy of `Dog`, identical to original dog1
    Dog dog2 = new Dog(dog1);
  • Override Object.clone()在你的类 Dog 中。在这种情况下,您将拥有:

    // dog2 refers to new copy of `Dog`, identical to original dog1
    Dog dog2 = dog1.clone();

我认为您也可以引用埃德加的回答以及这些选项的简单示例。

关于java - 将一个对象设置为与另一个对象相等时的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20298847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com