内部类
内部类的作用不只是代码隐藏机制,内部类和外围类可以通信。
在拥有外部类之前是不可能创建内部类对象的。 这是因为内部类对象会暗暗地连接到创建他的外部类对象上(外部类的引用 Outer.this)。
如果创建的是嵌套类(静态内部类),那么它就不需要对外部类对象的引用。
静态方法中不能new内部类的实体对象
原因如下:
1.内部类可以访问外部类的成员变量
2.对象创建完成后对象的成员变量才会被分配空间
3.main的静态方法执行时可以不存在外部类,不创建实体对象
4.内部类能访问成员变量意味着一定存在外部类实体对象
因为3和4矛盾,所以在静态方法中不能new内部类的实体对象
解决办法1:新建一个非静态方法init(),在init()方法中new内部类的实体对象.然后在静态方法main中新建一个外部类的实体对象去调用init()方法.
方法2:先创建一个外部类对象 outer,再使用outer.new Inner()创建内部类对象。