案例分析:
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
USB接口,包含打开设备功能,关闭设备功能
笔记本类,包含开机功能、关机功能、使用USB设备功能
鼠标类,要实现USB接口,并具备点击的方法
键盘类,要实现USB接口,具备敲击的方法
重点在于:接口的基本使用、对象的上下转型以及使用接口作为方法的参数 。
1.定义一个USB接口,两个抽象方法
package edu.shengda;
public interface USB {
public abstract void open();//打开设备
public abstract void close();//关闭设备
}
2.定义一个笔记本类,并能实现使用设备
package edu.shengda;
public class Computer {
public void powerOn(){
System.out.println("笔记本电脑开机");
}
public void powerOff(){
System.out.println("笔记本电脑关机");
}
//使用设备的方法
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();//关闭设备
}
}
3.定义一个鼠标
package edu.shengda;
//鼠标是一个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("鼠标点击");
}
}
4.定义一个键盘
package edu.shengda;
//键盘是一个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("键盘输入");
}
}
5.mian方法
package edu.shengda;
public class DemoMain {
public static void main(String[] args) {
//创建一个笔记本电脑
Computer computer=new Computer();
computer.powerOn();
//准备一个鼠标,供电脑使用并向上转型
USB usbMouse=new Mouse();
//参数是USB类型,传递进去USB鼠标
computer.useDevice(usbMouse);
//创建有个USB键盘
Keyboard keyboard=new Keyboard();//没有使用多态
//方法参数是USB类型,传递进去的是实现类对象
computer.useDevice(keyboard);//也发生了转型
computer.powerOff();
}
}
6.实现结果: