【问题标题】:Setting the instance variables of one class to the instance variables of another class and将一个类的实例变量设置为另一个类的实例变量,
【发布时间】:2015-06-09 15:32:17
【问题描述】:

有没有办法将一个类的实例变量设置为另一个类的实例变量,当第二个类的实例变量发生变化时,第一个类的实例变量也随之变化,BEFORE make objects out哪一类?这是我的 Dog 课:

public class Dog {
int size;

Dog(int size) {
    this.size = size;
}

public static void main(String args[]) {
    Cat cat = new Cat();
    Dog dog = new Dog(cat.size);

    System.out.println(dog.size);

    cat.size = 17;
    dog.size = cat.size;

    System.out.println(dog.size);

}

} 

这是我的猫类:

public class Cat {
int size = 5;

}

如您所见,我必须用它们来制作对象才能将 dog.size 设置为 cat.size。有没有办法让在你制作对象之前,Dog 类中的实例变量“size”自动设置为 Cat 类中的实例变量“size”?基本上,如果 Cat 类中的实例变量“size”设置为 20,我希望我从 Dog 类中制作的每个对象的实例变量“size”也设置为 20。我希望我的解释不是太令人困惑。哦,而且,我知道你可以通过继承来做到这一点,但是我实际使用的类已经继承了另一个类,所以我不能使用那个方法。如果有人知道任何其他方法,请告诉我。谢谢你。

【问题讨论】:

  • 为什么不在它们都继承的类中具有大小?将其设为静态变量即可。
  • @ZiadHalabi Dog 只继承了一个类 Cat。并且将实例变量设为静态,这样您就无法创建该变量的对象。
  • 是的,我就是这个意思!

标签: java class object inheritance instance-variables


【解决方案1】:

我无法理解你的意思,但我想我知道你在说什么。

每次Cat's 'size' variable is changed, change every Dog's 'size' variable。如果是这种情况,请使用一个列表来存储您的 Dog 类可以访问的所有 Dog 实例。

// from java.util package.
List<Dog> dogs = new ArrayList<>();

在您的 Cat 类中,您需要一个方法来处理这两种情况:

public void setSize(int size) {
    // Set cat's size to size,

    // Get your java.util.List of dogs,
    // loop through them, and set each of their
    // size to the new size as well.
}

另外,请注意,每次创建 Dog 时,都需要将其添加到 dogs 列表中。

-或者-

按照人们在 cmets 中所说的话,使用 static 成员,而不是 instance 成员。

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2023-03-28
    • 2017-08-12
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多