Java在 静态(static)/非静态 内部类条件下创建对象的区别

145 阅读1分钟

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	//静态内部类B2
	{
		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
————————————————