如何在以下程序中访问此m1()方法?

时间:2018-02-15 06:45:01

标签: java methods

如何从m2()?访问x = 15值 我正在访问程序注释中给出的以下值。

  class A  {
        int x = 10;
        void m1(){
        int x = 15;     //How can we access x =15 ?

  class B{
        int x =20;
           void m2(){
            int x = 25;
            System.out.println(x);          //for x = 25
            System.out.println(this.x);     //for x = 20
            System.out.println(A.this.x);   //for x = 10
            System.out.println();           
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

BA内的内部类。因此,当您想要引用外部类时,使用A.this,您希望使用外部类中的m1,因此请使用A.this.m1()

答案 1 :(得分:0)

实际上,您无法访问x中定义的m1()。要修复它,您可以更改变量名称:void m1() { int a = 15; ...},或者更好地为所有变量使用不同的名称,因为可读性会高得多(初看起来,开发人员不会犹豫什么变量使用在每个地方):

public class A {
    private int a = 10;

    public void m1() {
        int m = 15;

        class B {
            private int b = 20;

            void m2() {
                int x = 25;
                System.out.println(x);  // x = 25
                System.out.println(a);  // a = 10
                System.out.println(b);  // b = 20
                System.out.println(m);  // m = 15
            }
        }
    }
}