2015-04-04 109 views
2

有没有办法将一个类的实例变量设置为另一个类的实例变量,并且当第二个类的实例变量发生变化时第一个类的实例变量也会随着它的变化而改变吗?这是我的狗类:将一个类的实例变量设置为另一个类的实例变量,并且

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.我希望我的解释不是太混乱。哦,而且,我知道你可以用继承来做到这一点,但是我实际使用的类已经继承了另一个类,所以我不能使用这种方法。如果有人知道任何其他方法,请让我知道。谢谢。

+1

为什么不在他们都继承的类中有大小?使它成为一个静态变量将做到这一点。 – 2015-04-04 20:08:24

+0

@ZiadHalabi狗只继承一类,猫。并且让实例变量static使得它不能创建那个变量的对象。 – Skillet 2015-04-04 20:10:08

+0

这就是我的意思! – 2015-04-04 20:12:58

回答

3

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

每一次的Cat's 'size' variable is changed, change every Dog's 'size' variable。如果是这种情况,请使用列表来存储您的Cat类可以访问的所有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列表。

- 或 -

转到由什么人说的意见,并使用static成员,而不是一个instance成员。