1.模拟电脑的开机关机
2.模拟鼠标、键盘的插入、拔出
3.Java接口的练习
package USB;
public interface USB {
public abstract void open();
public abstract void close();
}
========================================
package USB;
public class Mouse implements USB {
public void open(){
System.out.println("打开鼠标");
}
public void close(){
System.out.println("关闭鼠标");
}
public void click(){
System.out.println("点击鼠标");
}
}
=============================================
package USB;
public class Keyboard implements USB{
public void open(){
System.out.println("打开键盘");
}
public void close(){
System.out.println("关闭键盘");
}
public void type(){
System.out.println("键盘输入");
}
}
=============================================
package USB;
public class Computer {
public void powerOn(){
System.out.println("笔记本开机");
}
public void powerOff(){
System.out.println("笔记本关机");
}
public void usbDevice(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();
}
}
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
1 boolean result = obj instanceof Class
其中 obj 为一个对象,Class 表示一个类或者 一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不 能确定类型,则通过编译,具体看运行时定。
=============================================================
package USB;
public class DemoMain {
public static void main(String[] args) {
Computer computer = new Computer();
computer.powerOn();
Mouse mouse = new Mouse();
USB usbMouse = mouse; //向上转型实现多态
computer.usbDevice(usbMouse);
USB usbKeyboard = new Keyboard();
computer.usbDevice(usbKeyboard);
Mouse mouse1 = new Mouse(); //实例化的时候向上转型实现多态
computer.usbDevice(mouse1);
computer.powerOff();
}
}