java创建对象的时候报错了,不知道哪里错了。。。。。。

package test81;

public class test81 {
public static void main(String[] args) {
Student s1 = new Student(); //报错:No enclosing instance of type test81 is accessible. Must qualify the allocation with an enclosing instance of type test81 (e.g. x.new A() where x is an instance of test81).

s1.setName("ohno");
s1.setAge(23);
System.out.println(s1.getName()+"...."+s1.getAge());
s1.eat();
s1.study();
System.out.println("..............................................");
Student s2 = new Student();
s2.setName("nino");
s2.setAge(20);
System.out.println(s2.getName()+"...."+s2.getAge());
s2.eat();
s2.study();
}
class person{
private String name;
private int age;
public person(){}
public person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void eat(){
System.out.println("吃饭");
}
}
class Student extends person{
public Student(){}
public Student(String name,int age){
super(name,age);
}
public void study(){
System.out.println("学习");
}
}
}

你写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public static class.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-09
改成static class Student extends person{
或者把Student 定义在test81 外面。

非静态嵌套类必须在外套类的非静态成员里构造本回答被提问者和网友采纳