2013-10-14 2 views
2

Я искал ответ на эту проблему весь день.Как получить доступ к одному и тому же объекту из нескольких классов в Java

У меня есть класс значений, который содержит множество значений до тех пор, пока программа работает.

Я создаю новый объект Value в классе A и сохраняю значение int.
Класс A также имеет метод printMoney().

public class A { 
Value value = new Value(); 
value.setMoney(100); 

public void printMoney { 
System.out.println(value.getMoney); 
} 

В классе B, я хочу, чтобы иметь возможность вызывать printMoney() из класса А, так логически я сделать следующее:

public class B { 
A a = new A(); 

a.printMoney(); 
} 

Это, тем не менее, возвращение «0» как вместо «100».

Я понимаю, что, создав объект A, я автоматически создаю новый объект значения, который имеет денежную ценность по умолчанию. Итак, в основном мой вопрос; как я могу это решить?

+0

что такое 'value.getMoney'? Это не вызов метода, и вы не указали код для своего класса «Значение». Я подозреваю, что проблема есть. –

+1

Concur..the line value.setMoney (100); находится вне метода и в заголовке класса. Это даже компилируется? – henderso

ответ

5

Сделать объект статическим. static Value value = new Value();

  • static переменные являются общими для всех объектов
  • Таким образом, изменения, внесенные в static переменной будет отражаться для всех объектов класса.
1

, если вы хотите, чтобы получить это значение в вы должны присвоить значение в construtor, как

public class A { 
    Value value = new Value(); 

    public A() { 
    this.value.setMoney(100); 
    } 

в противном случае, вы можете сделать значение статического

+0

Я решил сделать его статическим. Спасибо за Ваш ответ. – DaanBakbanaan

0

вы должны получить экземпляр что создает объект B и сохранить его, то вы могли бы назвать это так:

public class A { 
    B b = new B(this); 
} 

public class B { 
    A a; 

    public B(A a) { 
     this.a = a; 
    } 

    private someMethod() { 
     a.printMoney(); 
    } 
} 
Смежные вопросы