Java:接口繼承接口 (多繼承機制)


在看API文檔時,突然發現一個接口可以是其他接口的子接口,這說明接口之間會存在繼承的關系。查找了相關的資料,做一個總結。

是繼承還是實現

首先要搞清楚接口之間的關系使用的關鍵字是extends還是implement。網友有如下回答:

一個類只能extends一個父類,但可以implements多個接口。java通過使用接口的概念來取代C++中多繼承。與此同時,一個接口則可以同時extends多個接口,卻不能implements任何接口。因而,Java中的接口是支持多繼承的。

自己動手驗證了一下:

首先在eclipse中創建interface時,彈出選項窗口中會有一個選項:

可以看到eclipse中也明確提示可以使用extends關鍵字繼承上層接口

再看測試代碼清單:

Interface1:

  1. public interface Interface1 {  
  2.       
  3.     public void method1();  
  4. }  

Interface2:


看到接口之間的關系使用implements關鍵字時會報錯,錯誤提示信息如下:

  1. Syntax error on token "implements", extends expected  

eclipse明確指出,接口之間是繼承關系,而非實現關系。

修改為extends時代碼正確:

  1. public interface Interface2 extends Interface1{  
  2.     public int a = 1;  
  3.     public void method2();  
  4. }  

 

前面網友又提到java接口是可以支持多繼承的。做了一下實驗:

代碼清單:

  1. //interface3  
  2. <pre name="code" class="java">public interface Interface3 {  
  3.     public void method3();  
  4. }  

//interface4

  1. <pre name="code" class="java">public interface Interface4 extends Interface1, Interface3 {  
  2.     public void method4();  
  3. }  

實現類A:

  1. public class A implements Interface4 {  
  2.   
  3.     public static void main(String[] args) {  
  4.           
  5.     }  
  6.     @Override  
  7.     public void method1() {  
  8.         // TODO Auto-generated method stub  
  9.         System.out.println("method1");  
  10.     }  
  11.   
  12.     @Override  
  13.     public void method3() {  
  14.         // TODO Auto-generated method stub  
  15.         System.out.println("method2");  
  16.     }  
  17.   
  18.     @Override  
  19.     public void method4() {  
  20.         // TODO Auto-generated method stub  
  21.         System.out.println("method3");  
  22.     }  
  23.       
  24.       
  25. }  

Main主類:

  1. public class Main {  
  2.   
  3.     public static void main(String[] args) {  
  4.         // TODO Auto-generated method stub  
  5.         A a = new A();  
  6.         a.method1();  
  7.         a.method3();  
  8.         a.method4();  
  9.     }  
  10.   
  11. }  

輸出結果:

  1. method1  
  2. method2  
  3. method3  

說明java接口的繼承是多繼承的機制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM