使用内部类编译时出错

时间:2013-07-09 02:12:30

标签: java oop

我有以下代码:

public class Person{
    class Student extends Person{}
    public static void main(String[] ){
        Person p = new Student();
        //error compiling here, can't access non-static member from a static context
    }  
}

请为我解释,谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

class Student extends Person{}
声明

没有static,因此我们必须首先拥有Person的实例。

当我们在main时,我们处于静态上下文中,并且没有Person的实例。

您应该将Student类移动到名为Student.java文件中,并确保在扩展时实际执行某些操作。

然后,您可以尝试获取它的实例,而不必担心内部类型和嵌套类。

当一个类需要它是另一个类的实例的子类时,使用嵌套类。请参阅this tutorial

否则(在大多数情况下), 始终 类会进入他们自己的文件。

答案 1 :(得分:1)

创建时,必须为内部类提供封闭类的实例。

public class Person{
    class Student extends Person{}
    public static void main(String[] ){
        Person p = new Person().new Student();
    }  
}