public class Test {
private String name;
public static void main(String[] args) {
InnerClass inner = new InnerClass();//这里会出现错误
System.out.println(inner);
}
class InnerClass{
public void test(){
System.out.println(name);
}
}
}
静态方法中不能new内部类的实例对象,为什么?
1.内部类可以访问外部类的成员变量
2.对象创建完成后对象的成员变量才会被分配空间
3.main的静态方法执行时可以不存在外部类,不创建实体对象
4.内部类能访问成员变量意味着一定存在外部类实体帝乡
因为3和4矛盾,所以在静态方法中不能new内部类的实体对象。
所以进行改写,要想创建内部类的的实例对象,必须创建外部类的实例对象。
public class Test {
private String name;
public void init(){
InnerClass inner = new InnerClass();
System.out.println("创建了Inner类"+inner);
inner.test();
}
public static void main(String[] args) {
Test test = new Test();
test.name = "limeng";
test.init();
}
class InnerClass{
public void test(){
System.out.println(name);
}
}
}
所以使用内部类必须创建外部类的实例。