将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。
访问特点:
内部类可以直接访问外部类中的成员,包括私有成员。
而外部类要访问内部类中的成员必须要建立内部类的对象。
外部类调用内部类:在自己某个方法中创建一个内部类对象,内部类名 对象引用 = new 内部类名();
内部类的修饰符:
Private 为了安全考虑。常见用法。
Static 为了方便。常见用法。
局部内部类:
局部内部类访问局部变量,该变量必须被final修饰。
局部变量会在方法调用完毕后,立即消失。而局部内部类中如果有地方使用着局部变量,当方法消失后,这个方法区中的内容还没有消失,也就是说这个变量还必须存在,所以为了延长局部变量的生命周期,就加final修饰内部类的变量。
成员内部类定义在成员位置,局部内部类定义在局部位置。
在测试类中使用内部类:
1、在测试类中创建外部类对象,调用包含有内部类对象的方法,间接执行使用了内部类中的成员变量;
2、在测试类中直接创建内部类对象,格式如下:
外部类名.内部类名 变量 = new 外部类名().new 内部类名();
Outer.Inner oi = new Outer().new Inner();
匿名内部类
前提:
必须存在一个抽象类或者接口。
格式:
new 类名或者接口名()
{
重写类或者接口中的方法。也可以自己定义新的方法。
}
理解:是一个继承了类或者实现了接口的匿名的子类对象。
一般来说,当接口或者抽象类中的方法在3个以下的时候,考虑使用匿名内部类。一个方法接收的形式参数是一个抽象类或者接口的时候可以采用匿名内部类实现。 |
|