彼此声明两个类

时间:2010-04-09 02:00:28

标签: java class

我正在NetBeans中编写应用程序。我有两个类MyApp_View和MyApp_Functions。

MyApp_View类就像这样开始

public class MyApp_View extends FrameView {
MyApp_Functions My_functions = new MyApp_Functions();

public MyApp_View(SingleFrameApplication app) {
    super(app);

在MyApp_Functions中我有 MyApp_View my_view = new MyApp_View(null);

我想从MyApp_Functions访问MyApp_View中的公共变量,从视图中访问函数中的公共方法,但是没有成功。

这可行吗?怎么样?

编辑: 从我得到的答案来看,我认为最好澄清一下。

如果我在MyApp_View中的MyApp_Functions MyApp_Functions中声明MyApp_View,它会按预期工作。但我不能从另一个类中访问这两个类中的公共内容。我显然只能从我声明的那个中获取内容。

如果我尝试在MyApp_Functions中声明MyApp_View并在MyApp_View中声明MyApp_Functions,那么它们编译正常。但是我在启动时遇到了一个null异常错误。

再次。更容易理解?这可行吗?如何?

3 个答案:

答案 0 :(得分:2)

您需要将引用从一个引用到另一个。在最基本的情况下,它会将你的第二行更改为:

MyApp_Functions My_functions = new MyApp_Functions(this);

并将相应的构造函数添加到MyApp_functions中,以便在变量中“保存”引用,然后可以在需要从MyApp_View访问某些内容时使用该变量。

但最终,您想要询问这种关系是否真的有必要,并且可能会重新设计系统以将其删除。

答案 1 :(得分:1)

  

MyApp_View my_view = new MyApp_View(null);

这将创建一个新的MyApp_View对象,该对象与构造MyApp_Function的对象不同。听起来你想要的是让两个对象相互引用。我通常在其中一个对象的构造函数中使用参数进行设置。这是一个例子:

class A {
    private B b;

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

class B {
    private A a;

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

现在,A类型的对象可以通过B访问关联的对象A.b,对象B可以通过{{访问关联的对象A 1}}。在您的示例中,B.aAMyApp_ViewB

答案 2 :(得分:0)

访问公共成员非常简单 - 例如,只需使用My_functions.foo即可访问foo类对象My_functions上的公开MyApp_Functions变量,同样如此使用my_view.bar()将在该对象上调用公共bar()方法。

但是,我怀疑你的问题是面向对象思维的更普遍的问题;我建议学习一本介绍性的Java书并完成它 - 在OO程序员思考的方式中,没有什么可以替代良好的基础。