0

我有以下代码:

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
    }  
}

请帮我解释一下,谢谢你的帮助

4

2 回答 2

1

内部类在创建时必须被赋予一个封闭类的实例。

public class Person{
    class Student extends Person{}
    public static void main(String[] ){
        Person p = new Person().new Student();
    }  
}
于 2013-07-09T02:31:21.123 回答
1
class Student extends Person{}

没有声明,static所以我们必须有一个Personfirst 的实例。

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

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

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

当一个类需要要求它是另一个类的实例的子类时,使用嵌套类。请参阅本教程

否则(在大多数情况下),类总是放在自己的文件中。

于 2013-07-09T02:15:36.347 回答