第四步:错误写法解释。
第五步:创建Dog类,继承Animal
第六步:Demo01Main中继续,查看结果
ClassCastException:类转换错误
总结:向下转型,本来就是才能转,本来就不是,他就会报错ClassCastException.
8_用instanceof关键字进行类型判断第一步:在上一个包中创建类:Demo02InstanceOf
第二步:如果new Cat改为new Dog呢?运行查看结果。
问题:本来想用狗的方法,为什么还要向上转型?向上转、向下转两种格式都知道,但是你这个代码好像没有意义,只有演示的意义,确实如此,
但是我们考虑另外一种情况:有的时候animal不是自己new出来,比如我现在有个Main方法,这个main方法是自己new了对象自己去转对吗?
比如我现在想养只宠物,不管是猫、狗、鱼都可以,我就是为了打发时间,我应该怎么做?
第三步:Demo02Instanceof类中继续
特别注意:向下转型一定要做instanceof类型判断,否则有可能会发生异常。ClassCastException
9_笔记本USB接口案例——分析接口与多态的综合案例
需求:笔记本电脑笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。
定义USB接口,具备最基本的开启功能和关闭功能,鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘生产出来无法使用。
案例分析笔记本类,实现笔记本使用USB鼠标、USB键盘、U盘
USB接口,包含打开设备功能,关闭设备功能。
鼠标类:实现USB接口,具备点击功能
键盘类:实现USB接口,具备按键功能。
U盘:实现USB接口,具备存取功能。
笔记本类:包含开机功能、关机功能、使用USB设备的功能
第一步:创建ch05.com.obtk_laptop. USB/*
* USB接口类
* **/
public interface USB {
//打开设备
public abstract void open();
//关闭设备
public abstract void close();
}
第二步:Laptop
/**
* @author fly
* @date 2019-11-13 09:30:40
*/
public class Laptop {
public void powerOn(){
System.out.println("打开笔记本电脑");
}
public void powerOff(){
System.out.println("关机笔记本电脑");
}
//使用USB设备的方法,使用接口作为方法的参数
public void useDevice(USB usb){
usb.open();//打开设备
usb.close();//关闭设备
}
}
第三步:Mouse