关于内在阶级和类隐藏的困惑

时间:2012-04-20 07:55:45

标签: java class inner-classes

我有一个要解决的示例代码,它基于inner类:

package inner;

class A {
    void m() {
        System.out.println("Outer");
    }
}

public class TestInner {
    public static void main(String[] args) {
        new TestInner().go();       
    }

    private void go() {
        new A().m();
        class A{
            void m(){
                System.out.println("Inner");
            }
        }
        new A().m();
    }
    class A{
            void m(){
            System.out.println("Middle");
        }
    }
}

上面示例代码给出的输出是:

Middle 
Inner

我的问题是,鉴于我不想使用包名创建对象,如何将输出打印为:

Outer
Inner

2 个答案:

答案 0 :(得分:0)

由于使用包装显然是答案,我认为你正在寻找一些迟钝的东西。

您可以添加外部类并调用它。

class B extends A { }

// in TestInner.go()
    new B().m();
    class A{
        void m(){
            System.out.println("Inner");
        }
    }
    new A().m();

答案 1 :(得分:0)

public class TestInner {
public static void main(String[] args) {
    new TestInner().go();       
}

private void go() {
    new inner.A().m();        //will produce output "Outer"
    class A{
        void m(){
            System.out.println("Inner");
        }
    }
    new A().m();             //will produce output "Inner"
}
class A{
        void m(){
        System.out.println("Middle");
    }
}