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

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
————————————————
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值