java静态方法不能创建内部类对象


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);
		}
	}

}

所以使用内部类必须创建外部类的实例。

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值