2015-04-04 2 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); 

} 

} 

Это мой класс Cat:

public class Cat { 
int size = 5; 

} 

Как вы можете видеть, что я должен сделать объекты из них обоих, чтобы установить dog.size в cat.size , Есть ли способ сделать это так, что перед тем, как вы создадите объекты, переменная «размер» экземпляра в классе Dog автоматически будет установлена ​​в переменную «размер» экземпляра в классе Cat? В принципе, если переменная «размер» экземпляра в классе Cat получает значение 20, я хочу, чтобы переменная экземпляра «размер» каждого объекта, который я делала из класса Dog, также имела значение 20. Я надеюсь, что мои объяснения были не слишком сбивает с толку. О, а также, я знаю, вы можете сделать это с наследованием, но класс, который я фактически использую, уже наследует другой класс, поэтому я не могу использовать этот метод. Если кто-нибудь знает какие-либо другие методы, пожалуйста, дайте мне знать. Спасибо.

+1

Почему бы не иметь размер в классе, который они оба наследуют? Сделать статическую переменную сделает трюк. –

+0

@ ZiadHalabi Собака только наследует один класс, Cat. И создание переменной экземпляра static делает так, что вы не можете создавать объекты этой переменной. – Skillet

+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 Список.

-Или-

Перейти на то, что люди говорят в комментариях, и использовать static элемент, вместо instance члена.