2015-04-04 107 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成員。