内部类定义原则:
当描述事物的时候,事物的内部还有事物,该事物用内部类来描述。
因为内部类事物在使用外部事物的内容。
内部类访问规则
1
、
内部类可以直接访问外部类,包括私有
(private)
。
之所有可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,
写法为:外部类名
.this.
外部成员名。
2
、
外部类访问内部类,必须建立内部类对象。
访问格式:
1
、当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,直接建立内
部类对象。
格式为:外部类名
.
内部类名变量名
=
外部对象
.
内部对象;
Outer.Inner in = new Outer().new Inner();
静态内部类:
2
、当内部类在成员位置上,就可以被成员修饰符所修饰,比如
private
:将内部类在外部类
中封装。
3
、
Static
:内部类就具备了静态的特性。称为静态内部类。
当内部类被静态修饰后,只能访问外部类中的静态成员,出现了访问局限。
4
、
在外部其他类中,如何直接访问
static
内部类的非静态成员呢?
格式为:
外部类名
.
内部类名
oi = new
外部类名
.
内部类名
().function(); //
外部类访问内部
类的函数。
5
、
在外部其他类中,如何直接访问
static
内部类静态成员呢?
格式为:外部类名
.
内部类名
.function();
注意:当内部类中定义了静态成员,该内部类必须是
static.
当外部类中的静态方法访问内部类时,内部也必须是
static.
内部类定义在局部(内部类在方法中)
在方法中的类,为局部内部类,
不可以被
static
修饰
,主要是
static
修饰的是成员(成员方
法、成员属性)
。局部成员,不可被
static
修饰。
可以直接访问外部类中的变量。
外部类中的引用?
内部类访问自己所在局部属性变量,这
个局部变量必须为
final
,
要不然不能访问。
匿名内部类
匿名内部类也就是没有名字的内部类。
是对内部类的简化。
内部类必须继承一个类或接口。