将一个类的实例变量设置为另一个类的实例变量

时间:2015-04-04 20:03:57

标签: java class object inheritance instance-variables

有没有办法将一个类的实例变量设置为另一个类的实例变量,当第二个类的实例变量发生变化时,第一个类的实例变量也会随之变化两个班级?这是我的狗课:

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);

}

} 

这是我的Cat课程:

public class Cat {
int size = 5;

}

正如您所看到的,我必须从两个对象中创建对象以将dog.size设置为cat.size。有没有办法让它在制作对象之前,实例变量' size'在Dog类中自动设置为实例变量' size'在猫班?基本上,如果实例变量' size'在Cat类中设置为20,我想要实例变量' size'我用Dog类创建的每个对象也设置为20.我希望我的解释不会太混乱。哦,而且,我知道你可以通过继承来做到这一点,但我实际使用的类已经继承了另一个类,所以我无法使用该方法。如果有人知道任何其他方法,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

// 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列表中。

-Or -

根据评论中人们的说法,使用static成员,而不是instance成员。