Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相互声明两个类_Java_Class - Fatal编程技术网

Java 相互声明两个类

Java 相互声明两个类,java,class,Java,Class,我正在用NetBeans编写一个应用程序。我有两个类MyApp_View和MyApp_函数 MyApp_View类开始时是这样的 public class MyApp_View extends FrameView { MyApp_Functions My_functions = new MyApp_Functions(); public MyApp_View(SingleFrameApplication app) { super(app); 在MyApp_函数中,我有 MyApp\u

我正在用NetBeans编写一个应用程序。我有两个类MyApp_View和MyApp_函数

MyApp_View类开始时是这样的

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

public MyApp_View(SingleFrameApplication app) {
    super(app);
在MyApp_函数中,我有
MyApp\u View my\u View=新的MyApp\u视图(空)

我想从MyApp_函数中访问MyApp_视图中的公共变量,并从视图中访问函数中的公共方法,但没有成功

这可行吗?怎么做

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

如果我在MyApp_函数中声明MyApp_视图,或者在MyApp_视图中声明MyApp_函数,它将按预期工作。但我无法从另一个类访问两个类中的公共内容。很明显,我只能从我声明的内容中访问内容

如果我尝试在MyApp_函数中声明MyApp_视图,并在MyApp_视图中声明MyApp_函数,那么它们编译得很好。但我在开始时得到一个空异常错误


再说一遍。更容易理解?这可行吗?怎么做

访问公共成员很容易——例如,只需使用
My\u函数。foo
将访问对象
MyApp\u函数
类的
My\u函数
上的公共
foo
变量,同样,使用
My\u view.bar()
将调用该对象上的public
bar()
方法


不过,我怀疑你的问题是一个更一般的面向对象思维问题;我建议你读一本介绍Java的书,仔细阅读——OO程序员的思维方式,没有什么可以替代坚实的基础。

访问公共成员很容易——例如,只需使用
My_函数.foo
将访问对象
MyApp_函数
类的
My_函数
上的公共
foo
变量,同样地,使用
My_视图.bar()
将调用该对象上的公共
bar()
方法


不过,我怀疑你的问题是一个更一般的面向对象思维问题;我建议你读一本介绍Java的书,仔细阅读——OO程序员的思维方式,没有什么可以替代坚实的基础。

你需要将参考资料从一本传递到另一本。最基本的情况是,您希望将第二行更改为:

MyApp_Functions My_functions = new MyApp_Functions(this);
向MyApp_函数添加适当的构造函数,将引用“保存”到变量中,然后在需要从MyApp_视图访问某些内容时可以使用该变量


但最终,您需要询问这些关系是否真的必要,并可能重新设计系统以删除它们。

您需要将引用从一个传递到另一个。最基本的情况是,您希望将第二行更改为:

MyApp_Functions My_functions = new MyApp_Functions(this);
向MyApp_函数添加适当的构造函数,将引用“保存”到变量中,然后在需要从MyApp_视图访问某些内容时可以使用该变量

但最终,您需要询问这种关系是否真的有必要,也许需要重新设计系统以删除它们

MyApp_视图my_视图=新建MyApp_视图(空)

这将创建一个新的
MyApp\u视图
对象,该对象与构建
MyApp\u函数的对象不同。听起来你想要的是让这两个对象互相引用。我通常在构造函数中为其中一个对象设置一个参数。下面是一个例子:

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
的对象可以通过
A.B
访问关联对象
B
,对象
B
可以通过
B.A
访问关联对象
A
。在您的示例中,
A
MyApp\u视图
B
MyApp\u函数

MyApp_视图my_视图=新建MyApp_视图(空)

这将创建一个新的
MyApp\u视图
对象,该对象与构建
MyApp\u函数的对象不同。听起来你想要的是让这两个对象互相引用。我通常在构造函数中为其中一个对象设置一个参数。下面是一个例子:

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
的对象可以通过
A.B
访问关联对象
B
,对象
B
可以通过
B.A
访问关联对象
A
。在你的例子中,
A
MyApp\u视图
B
MyApp\u函数

个人推荐:凯西·塞拉和伯特·贝茨福的《头先Java》,我更愿意推荐一些SmallTalk或Ruby书籍:)个人推荐:凯西·塞拉和伯特·贝茨福的《头先Java》,我宁愿推荐一些SmallTalk或Ruby书籍:))