如何在类范围外但在父类范围内访问变量?

时间:2017-07-02 16:33:11

标签: java class variables scope access

我有一个考试示例,询问我是否可以访问包含值1的x变量?解决方案就是我可以,但我对这究竟是什么感兴趣?

class A {
    int x = 1; //this is what I need access to.
    class B {
        int x = 2;
        void func(int x) {...}
    }
}

3 个答案:

答案 0 :(得分:2)

class A {
    int x = 1;

    class B {
        int x = 2;

        void func(int x) {
            System.out.println(A.this.x);
        }
    }
}

使用示例:

public class Main {
    public static void main(String[] args) {        
        A a = new A();
        A.B b = a.new B();

        b.func(0); // Out is 1
    }
}

答案 1 :(得分:1)

要访问父实例,请使用关键字,如ParentClassName.this

子类不能是静态的

答案 2 :(得分:1)

是的,您可以访问值为1的变量x。

这里A是你的外部类,B是非静态内部类。

要访问外部A类的变量x,您可以执行类似这样的操作

class B {
    int x = 2;
    void func(int x) {
      System.out.print(A.this.x +"  and  "+x);
    }
}