1、基于Car接口创建成员内部类对象作为参数传给驾驶员对象的drive()方法。
2、基于Car接口创建匿名内部类对象作为参数传给驾驶员对象的drive()方法。
一、编程实现
1、创建汽车接口
- 建p07.t07包,包里建Car接口
2、创建司机类- 建p07.t07包,包里建Driver类
- Driver是Benz的外部类,Benz就是Driver的成员内部类
- 给Driver类添加name属性和drive(Car car)方法
3、创建测试司机类 - 建p07.t07包,包里建TestDriver类
- 运行,看结果
5、修改TestDriver类,演示匿名内部类- 匿名内部类是直接基于接口创建对象
- 运行代码
- 对比上面两个运行结果会发现:为什么奔驰有自我介绍而宝马没有?
二、知识讲解
- 在Java中,允许在一个类的内部定义类,这样的类称作内部类(inner class),这个内部类所在的类称作外部类(outer class)。
1、成员内部类 - 在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。其实我们可以将内部类理解为国中之国。
2、局部内部类定义 - 局部内部类,也叫做方法内部类,就是定义在某个局部范围中的类,它和局部变量一样,都是在方法中定义的,其有效范围只限于方法内部。
3、静态内部类定义 - 所谓静态内部类,就是使用static关键字修饰的成员内部类。静态内部类在成员内部类前增加了static关键字,在功能上,静态内部类中只能访问外部类的静态成员,同时通过外部类访问静态内部类成员时,可以跳过外部类从而直接通过内部类访问静态内部类成员。
4、匿名内部类 - 匿名内部类其实就是没有名称的内部类。在调用包含有接口类型参数的方法时,通常为了简化代码,可以直接通过匿名内部类的形式传入一个接口类型参数,在匿名内部类中直接完成方法的实现。
三、 拓展练习
问题:使用成员内部类实现学生使用各种类型计算机的场景