2013-07-17 8 views
-2

Есть ли способ доступа к одному объекту в двух разных классах?Использование одного и того же объекта в двух разных классах

Допустим, у меня есть класс

public class A{ 
MyClass myObj = new MyClass(); 

myObj.setValue(x); 
} 

Есть ли способ использования myObj в другом классе, скажем, класс B и быть в состоянии получить доступ к значению, установленному т.е. x без необходимости создавать getX методы класс A?

+2

Вы не проходите мимо объектов, вы передаете ссылки на объект, и эта ссылка может повторяться столько раз, сколько вам захочется. –

ответ

0

мог передать его в конструктор В.

public class B { 
    MyClass obj; 

    B(MyClass obj) { 
     this.obj = obj; 
    } 
} 

Так new B(myObj); тогда просто позвоните myObj.getValue();

0

Если вы имеете в виду это

public class A{ 
int x; int y; 
} 

public class B{ 
A a; int b; 
} 

затем Да. Это возможно.

0

Вы можете установить й быть общественным/пакет в области видимости и т.д. (here's the Java tutorial on access control), но я действительно не советовал бы этого.

Почему бы вам не использовать аксессуар getX()? Это достойная практика, поскольку она способствует инкапсуляции и вашей реализации x (есть ли у вас прямая ссылка? Вы рассчитываете ее на лету? Вы загружаете ее лениво из кеша?) Может измениться в будущем без необходимости изменять все классы клиентов. Если вы напрямую подключаетесь к x, вы непосредственно раскрываете свою реализацию.

0

Так создать объект один раз, и передать его в конструкторах А и В:

C c = new C(); 
A a = new A(c); 
B b = new B(c); 

... 

public class A 
{ 
    private final C c; 

    public A(C c) 
    { 
     this.c = c; 
    } 
} 
1

Да, вы можете.

Вы можете сделать объект статичным ...

public class A{ 
public static MyClass myObj = new MyClass(); 

myObj.setValue(x); 
} 

Это могут быть доступны из любой точки мира по отношению A.myObj

Сказав это, я не предпочитаю использовать статические слишком много. Используйте только в том случае, если это абсолютно необходимо.

Вы используете статическую переменную, когда сохраненные данные связаны с классом, и нестатические, когда они связаны с объектом.

Смежные вопросы