首先是分析笔记本类,实现笔记本使用USB鼠标,USB键盘:
USB接口,包含打开设备功能、关闭设备功能
笔记本类,包含开机功能、关机功能、使用USB设备功能
鼠标类,实现USB接口,具备点击的方法
键盘类,实现USB接口,具备敲击的方法
这是实现类:
public class DemoMain {
public static void main(String[] args) {
//创建一个笔记本类
Computer computer = new Computer();
computer.powerOn();//笔记本开机
//准备一个鼠标类,供电脑使用
//Mouse mouse = new Mouse();
//首先进行向上转型:先当做USB
//左边是接口,右边是实现类
USB usb = new Mouse();
//参数是usb类型,我正好传递进去的就是usb鼠标
computer.useDevice(usb);
//创建一个USB键盘
Keyboard keyboard = new Keyboard();
//方法参数是USB类型,传递进去的是实现类对象
computer.useDevice(keyboard);//正确写法
//使用子类对象,匿名对象,也可以
// computer.useDevice(new Keyboard());//也是正确写法!
computer.powerOff();//笔记本关机
System.out.println("=============");
method(30.0);//正确写法,double -- > double
method(30); //正确写法,int -- > double
int a = 30;
method(a); //正确写法,int -- > double
}
public static void method(double num) {
System.out.println(num);
}
}
这是定义的笔记本类:
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 Mouse implements USB{
@Override
public void open() {
System.out.println("打开鼠标");
}
@Override
public void close() {
System.out.println("关闭鼠标");
}
public void click() {
System.out.println("点击鼠标");
}
}
这是键盘类:
//这句话的意思是:
//键盘就是一个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 interface USB {
public abstract void open(); //打开设备
public abstract void close(); //关闭设备
}