内部类

内部类的作用不只是代码隐藏机制,内部类和外围类可以通信。

 

在拥有外部类之前是不可能创建内部类对象的。 这是因为内部类对象会暗暗地连接到创建他的外部类对象上(外部类的引用 Outer.this)。

如果创建的是嵌套类(静态内部类),那么它就不需要对外部类对象的引用。

 

静态方法中不能new内部类的实体对象

原因如下:

1.内部类可以访问外部类的成员变量

2.对象创建完成后对象的成员变量才会被分配空间

3.main的静态方法执行时可以不存在外部类,不创建实体对象

4.内部类能访问成员变量意味着一定存在外部类实体对象

因为3和4矛盾,所以在静态方法中不能new内部类的实体对象

 

解决办法1:新建一个非静态方法init(),在init()方法中new内部类的实体对象.然后在静态方法main中新建一个外部类的实体对象去调用init()方法.

        方法2:先创建一个外部类对象 outer,再使用outer.new Inner()创建内部类对象。

 

 

 

posted @ 2018-11-06 10:44  沈友慧  阅读(109)  评论(0编辑  收藏  举报