我有以下代码:
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
}
}
请为我解释,谢谢你的帮助
答案 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();
}
}