您好,登錄后才能下訂單哦!
本文實例講述了Java接口繼承和使用接口操作。分享給大家供大家參考,具體如下:
一 接口的繼承
1 點睛
接口支持多繼承,一個接口可以有多個父接口,子接口擴展某個父接口,將會獲得父接口里定義的所有抽象方法、常量。
一個接口繼承多個父接口時,多個父接口排在extends關鍵字之后。
2 代碼
interface interfaceA { int PROP_A = 5; void testA(); } interface interfaceB { int PROP_B = 6; void testB(); } interface interfaceC extends interfaceA, interfaceB { int PROP_C = 7; void testC(); } public class InterfaceExtendsTest { public static void main(String[] args) { System.out.println(interfaceC.PROP_A); System.out.println(interfaceC.PROP_B); System.out.println(interfaceC.PROP_C); } }
3 運行
5
6
7
4 說明
interfaceC接口繼承了 interfaceA和 interfaceB,所以 interfaceC中獲得了它們的常量,因此在main()方法中看到通過 interfaceC來訪問PROP_A、PROP_B、PROP_C常量。
二 使用接口
1 點睛
接口不能用于創建實例,但接口可以用于聲明引用類型變量。但這個引用類型的變量必須引用到其實現類的對象。接口的主要用途就是被實現類實現。接口主要有如下用途。
一個類可以實現一個或多個接口,繼承使用extends關鍵字,實現則使用implements關鍵字。一個類可以實現多個接口,這是Java為單繼承靈活性不足所做的補充。
一個類實現一個或多個接口之后,這個類必須完全實現這些接口里所定義的全部抽象方法(也就是重寫這些抽象方法);否則,該類將保留從父接口那里繼承到的抽象方法,該類也必須定義成抽象類。
2 代碼
interface Output { // 接口里定義的成員變量只能是常量 int MAX_CACHE_LINE = 50; // 接口里定義的普通方法只能是public的抽象方法 void out(); void getData( String msg ); // 接口中定義默認方法,需要使用default修飾 default void print( String... msgs ) { for (String msg : msgs) { System.out.println(msg); } } // 接口中定義默認方法,需要使用default修飾 default void test() { System.out.println("默認的test()方法"); } // 接口中定義類方法、需要使用static修飾 static String staticTest() { return "Class method"; } } // 定義一個Product接口 interface Product { int getProduceTime(); } // 讓Printer類實現Output和Product接口 public class Printer implements Output , Product { private String[] printData = new String[MAX_CACHE_LINE]; // 用以記錄當前需打印的作業數 private int dataNum = 0; public void out() { // 只要還有作業,繼續打印 while(dataNum > 0) { System.out.println("打印機打印:" + printData[0]); // 把作業隊列整體前移一位,并將剩下的作業數減1 System.arraycopy(printData , 1 , printData, 0, --dataNum); } } public void getData(String msg) { if (dataNum >= MAX_CACHE_LINE) { System.out.println("輸出隊列已滿,添加失敗"); } else { // 把打印數據添加到隊列里,已保存數據的數量加1。 printData[dataNum++] = msg; } } public int getProduceTime() { return 45; } public static void main(String[] args) { // 創建一個Printer對象,當成Output使用 Output o = new Printer(); o.getData("輕量級Java EE企業應用實戰"); o.getData("瘋狂Java講義"); o.out(); o.getData("瘋狂Android講義"); o.getData("瘋狂Ajax講義"); o.out(); // 調用Output接口中定義的默認方法 o.print("孫悟空" , "豬八戒" , "白骨精"); o.test(); // 創建一個Printer對象,當成Product使用 Product p = new Printer(); System.out.println(p.getProduceTime()); // 所有接口類型的引用變量都可直接賦給Object類型的變量 Object obj = p; } }
3 運行
打印機打印:輕量級Java EE企業應用實戰
打印機打印:瘋狂Java講義
打印機打印:瘋狂Android講義
打印機打印:瘋狂Ajax講義
孫悟空
豬八戒
白骨精
默認的test()方法
45
4 說明
Printer 實現了 Output 接口和 Product接口,因此Pinter對象即可以直接賦給Output變量,也可直接賦給Product變量。仿佛Printer類既是Output類的子類,也是Product類的子類,這就是Java提供的模擬多繼承。
Printer實現了Output接口,即可獲取Output接口中定義的print()方法和test()兩個默認方法,因此Printer實例可以直接調用這兩個默認方法。
接口不能顯示繼承任何類,但所有接口類型的引用變量都可以直接賦給Object類型的引用變量。
更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。