Java 使用内部类编译时出错
我有以下代码:Java 使用内部类编译时出错,java,oop,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 } } 请给我解释一下,谢谢你的帮助 c
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
}
}
请给我解释一下,谢谢你的帮助
class Student extends Person{}
声明时不带static
,因此我们必须首先有一个Person
的实例
当我们在main
中时,我们处于静态上下文中,没有Person实例
您应该将Student
类移动到一个名为Student.java
的新文件中,并确保在扩展它时确实做了一些事情
然后,您可以尝试获取它的一个实例,而不必担心内部类型和嵌套类
当一个类需要要求它是另一个类实例的子类时,可以使用嵌套类。看
否则(在大多数情况下),类总是进入它们自己的文件中。内部类在创建时必须给出封闭类的实例
public class Person{
class Student extends Person{}
public static void main(String[] ){
Person p = new Person().new Student();
}
}
你的意思是“来自非静态上下文的静态成员”还是“来自静态上下文的非静态成员”?@Nambari看起来很像,但它的错误=\@Hexafrance抱歉,非静态最好准确编译要发布的代码,然后复制粘贴它并将错误消息粘贴到问题中。通常,回答问题的人理解错误信息中的信息,而这些信息对提问者来说似乎毫无意义。@Patricia Shanahan:没错。在某些情况下,我们多次看到编译器错误消息,甚至在没有看到代码的情况下,我们就知道问题所在。