如何使用接口完成对电脑提供外接的USB接口,连接电脑键盘使用。
1.分析。
电脑只负责提供USB接口,对USB接口负责,对USB接口提供方法。
键盘鼠标电脑不负责,USB对键盘鼠标负责。
这是编程思想。具体代码如下。
public interface USB {
public abstract void open();
public abstract void close();
}
//先定义一个USB的接口,提供两个抽象方法。
2.
public class Keyboard implements USB {
public void open() {
System.out.println("键盘开启");
}
public void close() {
System.out.println("键盘关闭");
}
}
//定义好一个键盘类,实现USB接口的两个抽象功能。
3.
public class Mouse implements USB {
public void open() {
System.out.println("打开鼠标");
}
public void close() {
System.out.println("关闭鼠标");
}
}//同理定义一个鼠标类,实现USB接口的两个抽象方法。
4.
public class Computer {
public void openComputer() {
System.out.println("电脑开机");
}
public void closeComputer() {
System.out.println("电脑关机");
}
//因为是用电脑使用鼠标,所以把鼠标放到电脑里面的功能里面实现。
public void useUSB(USB usb) {
usb.open();
usb.close();
}
}
定义一个电脑类,有两个空参方法。还有个有参数的的方法。问题来了,没有USB对象呀,因为USB是个接口,没办法new对象。
这个方法没有usb实例参数
因为USB类型是一个接口,但是Mouse和Keyboard都实现了接口USB,可以传参数。
这样电脑就直接面对USB接口不用面对Mouse和Keyboard
其实就是相当于 USB usb = new Mouse(); 就是多态
因为在多态中 父类类型引用变量指向子类对象,可以调用子类的成员方法。
用电脑的对象c调用useUSB方法就可以实现参数(前提是实现了接口,因为键盘和鼠标
直接面对USB,跟电脑没有任何关系)
再写一个Test类测试Computer
public class Test {
public static void main(String[] args) {
Computer c = new Computer();
c.openComputer();
Mouse m = new Mouse();
c.useUSB(m);
Keyboard k = new Keyboard();
c.useUSB(k);
c.closeComputer();
}
}
好了 希望大家看了帖子可以更好的理解接口。 |
|