班级超出范围?

时间:2015-08-16 17:21:56

标签: java scope

在答案是“编译失败”的问题中,因为在go方法中h1超出了范围。 h1对我来说是公开的,有人可以解释为什么它超出范围?方法何时可以访问其他变量?

public class Happy {
  int id;
  Happy(int i) { id = i; }
  public static void main(String [] args) {
    Happy h1 = new Happy(1);
    Happy h2 = h1.go(h1);
    System.out.println(h2.id);
  }
  Happy go(Happy h) {
    Happy h3 = h;
    h3.id = 2;
    h1.id = 3;
    return h1;
  }
}

2 个答案:

答案 0 :(得分:0)

此行定义

Happy h1 = new Happy(1);

这属于main(String[] args)

的范围

这就是为什么你无法在主{ }之外访问它。

答案 1 :(得分:0)

posCount
上述方法中使用的

h1超出了范围。

您正在main方法中创建h1对象,但尝试在go方法中访问它,其中h1不可见。

您可以像下面这样使用它: -

Happy go(Happy h) {
        Happy h3 = h;
        h3.id = 2;
        h1.id = 3;
        return h1;
      }