错误的代码:
错误代码图片
public class Main {
public static void main(String args[]) {
Main m = new Main();
student s = new student();//这里报错
s.setAge(17);
s.setName("你好");
System.out.println(s.getAge()+" " + s.getName());
}
private class student {
int age;
String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "student [age=" + age + ", name=" + name + "]";
}
}
}
错误提示:没有任何类型 Main 的外层实例可访问。必须用类型 Main 的外层实例(例如,x.new A(),其中 x 是 Main 的实例)来限定分配。
解决方法1:加个m的实例化参数,用来指定该类是Main下的类
解决方法2:加个static静态标识符,是因为main是静态方法吧,内部类student不是静态的,所以要先实例外部类Main才能去实例student。(如果两个都是静态的,就不需要实例化Main)
运行结果为: