1.内部类: 概念: 在一个类的内部,定义了一个新类 位置: 成员位置: 成员内部类 局部位置: 局部内部类 特点: 内部类可以直接访问外部类中的成员, 包含私有成员 而外部类访问内部类的成员,必须要先创建内部类对象
2.成员内部类: 格式: class Outer(){ //成员内部类 class Inner{ ..... } } 如何访问成员内部类 方式1: 直接创建内部类对象 格式: 外部类名.内部类名 对象名 = new 外部类名().new 内部类名(); 方式2: 在外部类中,创建一个用来访问内部类成员的方法即可 常用修饰符: private : 为了提高数据的安全性 static : 为了方便访问
3.局部内部类: 格式:class Outer(){ public void method(){ //局部内部类 class Inner(){ ...... } Inner in = new Inner(); in.成员; } } 当局部内部类访问外部类中的局部变量的时候, 外部类的局部变量要加final修饰。 4.匿名内部类: 概念: 就是没有名字的内部类 使用匿名内部类的前提条件: 要先定义好一个外部类, 或者定义好一个接口,才能使用匿名内部 类 如: interface Inter{ public abstract void show(); } 创建匿名内部类 方式1: new 外部类名(){ //重写外部类中抽象方法 }; 方式2: new 接口名(){ //重写接口中的抽象方法 }; 如:new Inter(){ public void show(){ System.out.println("show"); } }; 注意: 匿名内部类 实际上可以理解为 是实现了该接口的子类对象, 或者可以理解为 是继承了外部类的子类对象 总结: 可以理解为 匿名内部类, 就是一个子类对象 那么,我们就可以使用多态的方式 将子类对象 赋值 为 父类引用 如: Inter in = new Inter(){ public void show(){ System.out.println("show"); } };
|