什么是接口,如何理解

Java中的接口其实就是一套“标准”或者“规范”,比如使用接口实现【电脑对鼠标、键盘使用USB接口的管理】,鼠标和键盘他们与接口之间并不存在子类和父类的关系,但是鼠标和键盘又都要通过USB接口插入电脑,如果没有一个统一的规范,那么电脑该怎么识别呢?所以就需要一个“标准”来统一约束鼠标和键盘的使用规则,下面来举一个小例子:

 

 1 public interface USB {
 2     void work();
 3 }
 4 
 5 class Keyboard implements USB{
 6     @Override
 7     public void work() {
 8         System.out.println("这里是键盘实现USB的方法");
 9     }
10 }
11 
12 class Mouse implements USB{
13     @Override
14     public void work() {
15         System.out.println("这里是鼠标实现USB的方法");
16     }
17 }
18 
19 class computer {
20     void computerStart(){
21         System.out.println("--电脑启动");
22     }
23 
24     void computerStop(){
25         System.out.println("--电脑关闭");
26     }
27     void useUSB(USB usb){
28         USB u = usb;
29         u.work();
30     }
31 }
32 
33 class TestUsB {
34     public static void main(String[] args) {
35         computer computer = new computer();
36         computer.computerStart();
37         computer.useUSB(new Keyboard());  
38         computer.computerStop();
39 
40     }
41 }

 

在这里就统一定义了一个USB的接口标准,这个标准就定义了一个方法work(),这个USB接口就是电脑上的USB接口,不管什么设备,如果想要通过这个USB接口连接我的电脑,都要按照我的一个规定来做,这个规定就是这个work方法,但是为什么这里只是定义了一个方法而没有具体实现呢?因为电脑的USB接口并不知道要插入的设备是谁,所以就事先写了一个“合同”放在这里,这个合同是空白的,如果有设备要通过“我”来连接电脑,那就把这个协议拿走,自己在上面签订一个协议。

1 public interface USB {  
2   void work();
3 }

 

比如:现在键盘要通过USB连接电脑,键盘就需要把那份“协议”拿过来,然后在上面写下信息,表示“遵守约定”,所以就写成:class Keyboard 通过implements关键字去遵循 USB的约定,并且把USB的一个协议(  work方法 )拿过来在上面写下约定。这就是 实现接口,然后重写接口的方法。

1 class Keyboard implements USB{
2     @Override
3     public void work() {
4         System.out.println("这里是键盘实现USB的方法");
5     }
6 }

 

在比如说,这里又有一个鼠标也要通过USB连接电脑,所以它也要通过 implements关键字去遵循 USB的约定,然后把USB的一份协议拿过来,在上面签订这份协议,(我只是打印一句话,来区分是哪个设备)

1 class Mouse implements USB{
2     @Override
3     public void work() {
4         System.out.println("这里是鼠标实现USB的方法");
5     }
6 }

 

现在是测试两个设备通过USB来连接电脑,既然要使用电脑,肯定要建立一个电脑的实体,就是new一个电脑,电脑本身也有很多功能,比如开启电脑、关闭电脑、在电脑上一系列的操作等等,还有一个功能就是要使用USB的功能,因为要通过这个USB来连接外部设备,所以在这里定义一个方法:useUSB(USB usb),这个方法的参数接收的是一个USB类型的对象,因为电脑要通过这个借口连接很多设备,还没有连接之前,并不知道要连接的是哪一个,所以就事先定义一个USB标准的对象,因为所有能连接电脑的设备都遵循了这一标准,没有遵循这个标准的(没有在USB这个标准上签订协议的)都不能连接电脑。

 1 class computer {
 2     void computerStart(){
 3         System.out.println("--电脑启动");
 4     }
 5 
 6     void computerStop(){
 7         System.out.println("--电脑关闭");
 8     }
 9     void useUSB(USB usb){
10         USB u = usb;
11         u.work();
12     }
13 }

 

电脑、鼠标、键盘类以及接口标准也定义好了,接下里就是用户来使用电脑了,看看到底这个电脑能不能通过我们刚才定义的接口标准来使用鼠标或者键盘,看下面代码,首先要使用电脑,就需要通过new关键字创建一个电脑的实体,然后才能真正使用,通过调用电脑的computer.computerStart();方法,以及computer.computerStop();方法,是测试电脑的这两个功能,可以打印电脑“电脑启动”和“电脑关闭”功能,下面我们通过使用电脑的computer.useUSB(new Keyboard()); 这个功能来插入个(就是New 一个)设备。

1 class TestUsB {
2     public static void main(String[] args) {
3         computer computer = new computer();
4         computer.computerStart();
5         computer.useUSB(new Keyboard());  /
6         computer.computerStop();
7     }
8 }

 

上面的代码就是测试一下键盘,就是插入一个键盘,此时会调用电脑的useUSB(USB usb)这个方法,就是使用USB方法,当插入一个键盘是,这里就会接收到一个键盘的对象,因为键盘已经在上面“签订了USB标准”,所以USB是识别的,并且是认识的,所以看到他之后,立即调用键盘之前签订的那个协议,并且通过键盘的work方法把键盘的功能调用过来。那么这里就实现了使用键盘的功能。如果测试类里通过new 一个鼠标对象,这里的USB标准会识别出“这个是鼠标,调用鼠标的方法”。这个其实是一个多态的使用。

1    void useUSB(USB usb){
2         USB u = usb;
3         u.work();
4     }

 

最终打印输出如下图所示:

 

以上就是通过一个小的例子来说明JAVA中接口的使用方法,您如果觉得对您的理解有帮助的话,请帮忙准发分享一下,能帮助更多的人来理解接口

 

posted @ 2021-12-04 13:31  勤快的懒羊羊  阅读(873)  评论(0编辑  收藏  举报