成员内部类,是一种可以访问外部类的私有成员或属性。
成员内部类
作为外部类的一个成员存在,与外部类的属性、方法并列。
内部类和外部类的实例变量可以共存。
在内部类中访问实例变量:this.属性
在内部类访问外部类的实例变量:外部类名.this.属性。
在外部类的外部访问内部类,使用out.inner.
成员内部类的特点:
1.内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为PRIVATE,但是对于处于其内部的内部类还是可见的。)
2.用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。
注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。
对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer.class两类。
3.成员内部类不能定义静态成员,只能定义对象成员。
建立内部类对象时应注意:
在外部类的内部可以直接使用inner s=new inner( );(因为外部类知道inner是哪个类,所以可以生成对象。)
而在外部类的外部,要生成(new)一个内部类对象,需要首先建立一个外部类对象(外部类可用),然后在生成一个内部类对象。
Outer o=new Outer( );
Outer.Inner in=o.new.Inner( )。
4、创建成员内部类实例时,外部类的实例必须已经存在。
5、当内部类和外部类有同名的成员时,内部类可通过 外部类名.this.变量名 访问外部类成员。