-2

有没有办法访问两个不同类中的单个对象?

可以说我有课

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

myObj.setValue(x);
}

有没有办法myObj在另一个类中使用,比如类B并且能够访问设置的值,即x无需getX在类中创建方法A

4

5 回答 5

1

是的你可以。

您可以使对象静态...

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

 myObj.setValue(x);
}

这可以从任何地方访问 A.myObj

话虽如此,我不太喜欢使用静态。仅在绝对必要时使用。

当存储的数据与类相关联时,您使用静态变量,当与对象相关联时,您使用非静态变量。

于 2013-07-17T09:19:51.770 回答
0

可以将它传递给 B 的构造函数。

public class B {
    MyClass obj;

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

那么new B(myObj);就打电话myObj.getValue();

于 2013-07-17T09:07:08.103 回答
0

如果你是这个意思

public class A{
int x; int y;
}

public class B{
A a; int b;
}

好的。这个有可能。

于 2013-07-17T09:07:37.913 回答
0

您可以将 x 设置为公共/包范围等(这是关于访问控制的 Java 教程),但我真的不建议这样做。

你为什么不想要一个getX()访问器?这是一种不错的做法,因为它促进了封装,并且您的实现x(您有直接引用吗?您是否即时计算它?您是否从缓存中懒惰地加载它?)将来可以更改而无需修改所有客户端类。如果您x直接访问,那么您将直接公开您的实现。

于 2013-07-17T09:07:41.870 回答
0

所以创建一次对象,并将其传递给 A 和 B 的构造函数:

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;
    }
}
于 2013-07-17T09:08:09.703 回答