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

时间:2012-08-27 09:14:04

标签: java inner-classes

我有一个类和一个子类

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

好的,在第05行id喜欢访问A类的方法测试。 但我进入循环因为我不知道如何指定使用A类方法。

有什么想法吗?

4 个答案:

答案 0 :(得分:15)

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所提到的:避免在外部类和内部类中使用相同的方法名称,这将避免命名冲突。

答案 1 :(得分:5)

你可以这样做:

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

答案 2 :(得分:0)

B类不必是所谓的嵌套类,只需要编写

来扩展A类
public class B extends A {
...

}

比你可以调用A的测试()

super.test()

如果你按照你所做的那样调用test()那就是我们称之为递归的东西,并且会冻结到审判日

答案 3 :(得分:0)

如果您将其设为静态,则可以致电

A.test()

否则,您需要在B

中使用A的实例
A a;
a.test();