无法实例化内部类

时间:2016-04-25 14:04:43

标签: java

那是我的代码:

public class A {
    int age;

    void Do() {
        System.out.println("...");
    }

    class B extends A {
    }

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

错误:

new B();

为什么呢?为什么不对?

1 个答案:

答案 0 :(得分:4)

您将B声明为A的内部类,因此如果不提供封闭类A的实例,则无法对其进行实例化。

您可以在A之外移动B的定义以使代码正常工作:

class B extends A
{

}

public class A
{
    int age;

    void Do()
    {
     System.out.println("...");
    }

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

或者您可以保留类结构,但是创建A的实例以创建B的实例:

B b = new A().new B();