转型的异常
转型的过程中,一不小心就会遇到这样的问题,请看如下代码:
这段代码可以通过编译,但是运行时,却报出了 ClassCastException ,类型转换异常!这是因为,明明创建了Cat 类型对象,运行时,当然不能转换成 Dog 对象的。这两个类型并没有任何继承关系,不符合类型转换的定义。
为了避免 ClassCastException 的发生, Java 提供了 instanceof 关键字,给引用变量做类型的校验,格式如下:
所以,转换前,我们最好先做一个判断,代码如下:
2. 接口多态的综合案例
2.1 笔记本电脑
笔记本电脑(laptop )通常具备使用 USB 设备的功能。在生产时,笔记本都预留了可以插入 USB 设备的 USB 接口,但具体是什么 USB 设备,笔记本厂商并不关心,只要符合 USB 规格的设备都可以。
定义 USB 接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守
USB 规范,实现 USB 接口,否则鼠标和键盘的生产出来也无法使用。
2.2 案例分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
USB 接口,包含开启功能、关闭功能
笔记本类,包含运行功能、关机功能、使用 USB 设备功能
鼠标类,要实现 USB 接口,并具备点击的方法
键盘类,要实现 USB 接口,具备敲击的方法
2.3 案例实现
定义USB接口: