什么是非静态内部类:
public class Outer { Outer() { System.out.println("我是外部类"); } class Inner { Inner() { System.out.println("我是内部类"); } } }
如上所示,Inner就是一个非静态内部类。
我们需要的知道是:
非静态内部类默认持有一个外部类对象的引用
非静态内部类有外部类对象中所有对象跟属性的访问权限
.this跟.new的使用:
我们可以在内部类对象中,使用外部类名.this获取一个外部类对象,像这样:
class Inner { Inner() { Outer out = Outer.this; System.out.println("我是内部类"); } }
这实际上就是我们说的内部类中,默认持有一个外部类的对象的引用。
我们在创建一个内部类对象时需要用到.new语法,像这样:
Outer.Inner inner = new Outer().new Inner();