案例分析:
进行描述笔记本类,实现笔记本使用USB鼠标,USB键盘
1.USB接口,包含打开设备功能,关闭设备功能
2.笔记本类,包含开机功能,关机功能,使用USB设备功能
3.鼠标类,要实现USB接口,并具备点击的方法
4.键盘类,要实现USB接口,具备敲击的方法
案例实现:
USB类:
public interface USB {
public abstract void open();//打开设备
public abstract void close();//关闭设备
}
电脑类:
public class Computer {
public void powerOn(){
System.out.println("笔记本电脑开机");
}
public void powerOff(){
System.out.println("笔记本电脑关机");
}
//使用USB设备的方法,使用接口作为方法的参数
public void useDevice(USB usb){
usb.open();//打开设备
if(usb instanceof Mouse){//一定要先判断
Mouse mouse = (Mouse) usb;//向下转型
mouse.click();
}else if (usb instanceof Keyboard){//先判断
Keyboard keyboard = (Keyboard) usb;// 向下转型
keyboard.type();
}
usb.close();//关闭设备
}
}
键盘类:
//键盘就是一个USB设备
public class Keyboard implements USB {
@Override
public void open() {
System.out.println("打开键盘");
}
@Override
public void close() {
System.out.println("关闭键盘");
}
public void type(){
System.out.println("键盘输入");
}
}
鼠标类:
//鼠标就是一个USB设备
public class Mouse implements USB {
@Override
public void open() {
System.out.println("打开鼠标");
}
@Override
public void close() {
System.out.println("关闭鼠标");
}
public void click(){
System.out.println("点击鼠标");
}
}
最后测试实现:
import java.lang.reflect.Method;
public class DemoMain {
public static void main(String[] args) {
//首先创建一个笔记本电脑
Computer computer = new Computer();
computer.powerOn();
//准备一个鼠标,供电脑使用
//首先进行向上转型
USB usbMouse = new Mouse();//多态写法
//参数是usb类型,我正好传递的是实现类对象
computer.useDevice(usbMouse);
//创建一个USb键盘
Keyboard keyboard = new Keyboard();//没使用多态
//方法参数是USB类型,传递进去的是实现类对象
computer.useDevice(keyboard);//正确写法!也发生了向上转型
// computer.useDevice(new Keyboard());//也是正确写法
computer.powerOff();
}
}
运行结果: