1.在非静态内部类条件下不能逐步创建对象,要先创建一个外部类对象,再创建内部类对象。
个人理解:因为类还没加载即还没分配内存,内部所有非静态成员都没分配内存,不可能直接创建一个非静态内部类对象。
2.在静态内部类条件下,static已经分配好内存了即使类没加载,所以可以通过外部类路径可直接创建一个内部类对象。
class A
{
class B1 //非静态内部类B1
{
void print()
{
int index = 30;
System.out.println(index);
}
}
}
public class Test
{
public static void main(String [] args)
{
A a = new A(); //在创建非静态内部类对象时,一定要先创建起相应的外部类对象。
A.B1 b = a.new B1();
b.print();
}
}
输出结果:
————————————————
30
————————————————
class A
{
static class B2 //静态内部类B1
{
void print()
{
int index = 30;
System.out.println(index);
}
}
}
public class Test
{
public static void main(String [] args)
{
A.B2 b = new A.B2(); //直接创建静态内部类对象
b.print();
}
}
输出结果:
————————————————
30
————————————————