读《java编程思想》10-内部类
将一个类定义放在另一个类的定义内部,这就是内部类。 1、创建内部类对象方法,假设有一个外部类Outer,其中有一个内部类Inner。 (1)在外部类中,提供创建并返回内部类对象的方法,方法名可以和内部类名字相同(首字母小写), 如: public void inner() { return new Inner(); } (2)先创建外部类对象,然后使用外部对象.new的方式创建内部类。 如: Outer outer = new Outer(); Outer.Inner inner = outer.new Inner() 2、内部类 和 其构造方法都支持所有的访问修饰符,并受到访问控制。(和普通的成员变量 和 普通方法一样) (1)内部类默认的是包访问。如果在和定义不同的包中使用Outer.Inner声明变量,就会提示无法访问Inner。 (2)内部类的缺省构造方法默认的是包访问。如果在和定义不同的包中使用outer.new Inner(),则会提示构造函数无法访问。 (第一种创建方式是不是更简单呢) 3、链接到外部类 (1)内部类可以访问外部类所有成员,因为内部类默认存在一个指向外部类的引用。 (2)如果需要在内部类内部返回此引用,可以使用外部类.this 返回。 (3)外部类可以创建内部类对象,通过此对象直接访问内部类所有成员(包括private)。 4、私有内部类 + 向上转型