java变量范围问题

时间:2011-11-04 11:55:17

标签: java

我对java如何处理所有类都感到困惑。

我创建了一个课程foo.java,并在main foo.java方法foo中创建了bar的实例(一个创建的类对我来说没有任何意义,但似乎在java中是否正常?)

然后我创建了另一个类foo的实例,所以我现在在bar类中有foofoo的实例,但是如何访问成员变量foo中的函数是否为bar?

bar是处理代码,foo是ui,需要查看{{1}}中的所有数据,以便显示它。

4 个答案:

答案 0 :(得分:3)

有很多可能性。一种是使用foo实例构建bar

public class Foo {
    public void someFooMethod() {
    }
    public static void main(String[] args) {
        Foo foo = new Foo();
        Bar bar = new Bar(foo);
        bar.someBarMethod();
    }
}

public class Bar {
    private Foo fooLocalRefence;
    public Bar(Foo foo) {
        this.fooLocalReference = foo;
    }
    public someBarMethod() {
        this.fooLocalReference.someFooMethod();
    }
}

答案 1 :(得分:1)

你错了“一个创建自我的类对我来说没有意义,但在java中似乎很正常”,因为你的术语是错误的。您实际执行的操作是创建类Foo实例main()仅仅是应用程序的入口点,因为JVM只需要知道从哪里开始。

如果您希望两个不同类的实例共享信息,则需要为其中一个提供另一个类的引用。像这样:

Foo foo = new Foo();
Bar bar = new Bar(foo);

答案 2 :(得分:0)

我建议您查看oracle网站上的Java教程 - > http://download.oracle.com/javase/tutorial/java/index.html

遵循这些,这将使您更好地理解如何使用Java编写应用程序 - 编写您不理解的代码会在开发过程的后期导致问题......

答案 3 :(得分:0)

首先,main的{​​{1}}方法可能是Foo,因此没有static创建Foo的实例。

其次,Foo应通过getter方法公开其数据,Foo应通过调用所提供的Bar实例上的getter方法来访问数据。