繁体   English   中英

内部类访问外部类方法,方法名称相同

[英]inner class access to outer class method, same method names

我有一个班级和一个内部班级

01 public class A{
02   void test(){};
03   public class B{
04     void test(){
05       test();
06     }
07   }
08 }

好的,在第05行id想访问A类的方法test,但是我进入了一个循环,因为我不知道如何指定使用A类的方法。

有任何想法吗?

01 public class A{
02   void test(){};
03   public class B{
04     void test(){
05       test();  // local B.test() method, so recursion, use A.this.test();
06     }
07   }
08 }

编辑:正如@Thilo 提到的:避免在外部类和内部类中使用相同的方法名称,这将避免命名冲突。

你可以这样做:

public class A{
   void test(){
        System.out.println("Test from A");
    };
    public class B{
        void test(){
            System.out.println("Test from B");
            A.this.test();
        }
    }

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

然后你有以下输出:

Test from B
Test from A

B 类不必是所谓的嵌套类来扩展 A 类只需编写

public class B extends A {
...

}

比你可以调用 A 的 test() 像

super.test()

如果你像你那样调用 test() ,这就是我们所说的递归,并且会冻结到审判日

如果你让它静态,你可以打电话

A.test()

否则你需要一个 A 的实例在 B 中使用

A a;
a.test();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM