標籤:避免 機制 class print 修飾符 div 額外 局限性 沒有
Java基礎十--介面一、介面的定義和執行個體
1 /* 2 abstract class AbsDemo 3 { 4 abstract void show1(); 5 abstract void show2(); 6 } 7 8 當一個抽象類別中的方法都是抽象的時候,這時可以將該抽象類別用 9 另一種形式定義和表示,就是 介面 interface。 10 */ 11 12 //定義介面使用的關鍵字不是class,是interface. 13 //interface編譯後還是.class檔案,其實本質上還是class. 14 15 /* 16 介面和類中是實現,介面和介面之間是多繼承,為什麼可以多繼承,因為沒有方法體,能否多繼承的實質看有沒有方法體 17 */ 18 19 /* 20 對於介面當中常見的成員:而且這些成員都有固定的修飾符。 21 1,全域常量: public static final 22 23 2,抽象方法。public abstract 24 25 修飾詞你自己不寫的話程式給你加上。所以我們都寫上,那樣閱讀性強。 26 27 由此得出結論,介面中的成員都是公用的許可權. 28 29 繼承沒有實現成員變數,方法也是抽象方法,沒有函數體的方法,所以實現介面和繼承類不衝突,因為介面和類裡面的東西不一樣 30 */ 31 interface Demo 32 { 33 public static final int NUM = 4;//static和final和public你不寫程式會給你預設加上 34 35 public abstract void show1();//public和abstract你不寫程式會給你預設加上 36 public abstract void show2(); 37 } 38 //類與類之間是繼承關係,類與介面直接是實現關係。 39 /* 40 介面不可以執行個體化。 41 42 只能由實現了介面的子類並覆蓋了介面中所有的抽象方法後,該子類才可以執行個體化。 43 否則,這個子類就是一個抽象類別。 44 45 */ 46 47 48 class DemoImpl implements /*實現*/Demo 49 { 50 public void show1() 51 {} 52 53 public void show2() 54 { 55 56 } 57 } 58 59 60 /* 61 在java中不直接支援多繼承,因為會出現調用的不確定性。 62 所以java將多繼承機制進行改良,在java中變成了多實現。 63 64 一個類可以實現多個介面。 65 66 */ 67 68 interface A 69 { 70 public void show(); 71 } 72 73 interface Z 74 { 75 public int add(int a,int b); 76 } 77 78 79 80 81 class Test implements A,Z//多實現 82 { 83 84 public int add(int a,int b) 85 { 86 return a+b+3; 87 } 88 /**/ 89 public void show(){} 90 91 } 92 93 94 95 96 97 /* 98 一個類在繼承另一個類的同時,還可以實現多個介面。 99 100 101 102 */103 class Q104 {105 public void method()106 {}107 }108 109 abstract class Test2 extends Q implements A,Z110 {111 112 }113 /*114 介面的出現避免了單繼承的局限性。115 116 */117 118 119 interface CC120 {121 void show();122 }123 interface MM124 {125 void method();126 }127 128 interface QQ extends CC,MM//介面與介面之間是繼承關係,而且介面可以多繼承。 129 {130 void function();131 }132 133 class WW implements QQ134 {135 //覆蓋3個方法。136 public void show(){}137 public void method(){}138 public void function(){}139 }140 141 142 class InterfaceDemo 143 {144 public static void main(String[] args) 145 {146 147 Test t = new Test();148 t.show();149 150 // DemoImpl d = new DemoImpl(); 151 // System.out.println(d.NUM);152 // System.out.println(DemoImpl.NUM);153 // System.out.println(Demo.NUM);154 }155 }
二、介面和抽象類別的區別
1 /* 2 抽象類別和介面的異同點: 3 4 相同點: 5 都是不斷向上抽取而來的。 6 7 8 不同點: 9 1,抽象類別需要被繼承,而且只能單繼承。10 介面需要被實現,而且可以多實現。 11 2,抽象類別中可以定義抽象方法和非抽象方法,子類繼承後,可以直接使用非抽象方法。12 介面中只能定義抽象方法,必須由子類去實現。 13 3,抽象類別的繼承,是is a關係,在定義該體系的基本共性內容。14 介面的實現是 like a 關係,在定義體系額外功能。15 16 17 18 19 犬按功能分:有導盲犬,搜爆犬。20 21 22 abstract class 犬23 {24 abstract void 吼叫();25 }26 27 //abstract class 導盲28 interface 導盲29 {30 abstract void 導盲();31 }32 33 34 class 導盲犬 extends 犬 implements 導盲35 {36 public void 吼叫()37 {38 }39 public void 導盲(){}40 }41 42 43 44 //在不同的問題領域中,有不同的分析方式。45 學員:46 學習。47 抽煙學員48 49 50 51 52 煙民。53 54 55 56 57 58 59 60 61 */62 63 class InterfaceDemo 64 {65 public static void main(String[] args) 66 {67 System.out.println("Hello World!");68 }69 }
Java基礎十--介面