1、内部类可以直接访问外部类中的成员;
2、外部类要访问内部类,必须建立内部类对象
内部类使用情况:
一般用于类的设计。分析事物时,发现该事物描述中还有事物,而且这个事物还在访问事物的内容。这时就将还有的事物定义成内部类来描述。
内部类——修饰符
直接访问外部类中的内部类中的成员,格式是:
Outer.Inner in = new Outer().new Inner();
in.show();
但是如果内部类是静态的,相当于一个外部类:
Outerine.Inner in = new Outer.Inner();
如果内部类是静态的,外部类的成员方法也是静态的
Outer.Inner.function();
如果内部类中定义了静态成员,则该内部类也必须是静态的。
内部类能访问外部类中成员的原因:因为内部类持有了外部类的引用。 外部类名.this
局部内部类:内部类可以存储在局部位置上
内部类在局部位置上只能访问局部中被final修饰的局部变量。
class Outer
{
int num = 3;
void method()
{
class inner
{
void show()
{
}
}
}
}
匿名内部类:就是内部类的简写格式。前提是内部类必须继承或者实现一个外部类或者接口,其实就是一个匿名子类的对象(这句是指子类匿名),它的对象还是可以
有名字的(10-16)。
创建格式:new 父类or接口(){子类内容} (详10-15)
匿名类使用场景:
当函数参数是接口类型时,而且接口的方法不超过三个,可以使用匿名内部类作为实际参数进行传递。
多态经常结合匿名内部类来考察(10-17)