5.从抽象类和接口角度展示面向对象方面能力

内容提要
• 结合代码,讲述抽象类和接口的语法
• 结合需求,讲述抽象类和接口的适用场景
• 结合语法限制,讲述两者背后包含的面向对象思想 • 能实现多个接口,不能继承多个类
抽象类和抽象方法的语法
• 有抽象方法的必须是抽象类,反之不然 !

• 抽象方法不能定义方法体!

• 子类继承抽象方法时,必须实现抽象方法!,继承Animal的时候,必须得实现其中的抽象方法

5.从抽象类和接口角度展示面向对象方面能力

接口相关的语法
• 接口的方法没有方法体

• 一个类可以实现多个接口 !!!!

• 实现接口的类需要实现接口方法
5.从抽象类和接口角度展示面向对象方面能力
不能多重继承,但可以实现多个接口的的动机。。。

• Java类不能同时继承多个类,所有Java类都是Object的子类

• 假设允许多重继承,会导致方法逻辑很混乱,代码不容易维护

• 接口是对功能的封装,所谓技多不压身,允许一个类拥有多种 技能,即允许实现多个接口

• 如果不重写,将默认使用Object类里的hashcode,equals等方法

什么情况下该用接口?什么情况下该用抽象类???? 面试常常考的。。。。。。。
• 概念上的从属关系,可以用抽象类,比如动物类和猫类。。。

• 语法是为设计服务,根据需求合理地选用抽象类和接口 。。。

• 功能上的封装,是用接口,比如提供连接数据库功能的接口。。。

抽象类和接口的举例说明
• 设计空调车类时,侧重点不同,选用的方式也不同,这样后继 维护项目的代价会小些
• 空调生产厂商更关心实现空调功能的方式。所以会把空调的共性代码以接口的形式归纳,这样就能用实现空调接口的方式, 在船和飞机上,安装上空调的功能。
• 运营公司希望空调车的第一要素是“车”,在此基础上提供“空 调的服务”,所以,会继承“汽车”实现“空调车”的方案。并把一些共性代码封装在“汽车类”里,同时可以继承汽车类实现 Taxi等的类。

面试中可以结合这样的例子给讲出来。。。。。。

总结

1. 从抽象类和接口的语法里,观察了面向对象思想的设计动机。

2. 从代码的维护角度,讲述了能实现多个接口,但不能继承多个类的 原因 。

3. 结合业务需求,以实例的方式讲述了抽象类和接口的。