什麼是介面,如何理解

勤快的懶羊羊發表於2021-12-04

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中介面的使用方法,您如果覺得對您的理解有幫助的話,請幫忙準發分享一下,能幫助更多的人來理解介面

 

相關文章