经过接口和多态的学习,现在进行一个小实例
USB接口,包含打开设备功能,关闭设备功能。
电脑类,包含开机功能,关机功能,使用USB设备功能。
鼠标类,要实现USB接口,并具备点击的方法。
键盘类,要实现USB接口,并具备敲击的方法。
下面是实例。
USB接口:
public interface llUSB {
public abstract void open();
public abstract void close();
}
鼠标类:
public class Mouse implements llUSB{
@Override
public void open() {
System.out.println(“打开鼠标”);
}
@Override
public void close() {
System.out.println(“关闭鼠标”);
}
public void click(){
System.out.println(“你点了一下鼠标”);
}
}
键盘类:
public class KeyBoard implements llUSB{
@Override
public void open() {
System.out.println(“打开键盘”);
}
@Override
public void close() {
System.out.println(“关闭键盘”);
}
public void beat(){
System.out.println(“你敲打了一下键盘”);
}
}
电脑类:
public class llComputer {
public void poweron(){
System.out.println(“电脑开机”);
}
public void poweroff(){
System.out.println(“电脑关机”);
}
//使用USB设备的方法,使用接口作为方法的参数
public void User(llUSB USB){
USB.open();//打开设备
if (USB instanceof Mouse){//先判断
Mouse mouse=(Mouse) USB;//向下转型
mouse.click();
}
if (USB instanceof KeyBoard){//先判断
KeyBoard keyBoard=(KeyBoard) USB;//向下转型
keyBoard.beat();
}
USB.close();//关闭设备
}
}
测试类:
public class Test {
public static void main(String[] args) {
//首先创建一个电脑类
llComputer computer=new llComputer();
computer.poweron();
//创建一个鼠标,进行向上转型
llUSB mouse=new Mouse();//多态写法
//方法参数是USB类型,就传递进去USB鼠标
computer.User(mouse);
//创建一个USB键盘
KeyBoard keyBoard=new KeyBoard();//没有使用多态写法
//方法参数是USB类型,传递进去的是实现类对象
computer.User(keyBoard);//正确写法,也发生了向上转型
computer.User(new KeyBoard());//也是正确写法
computer.poweroff();
}
}