Java學習個人備忘錄之接口
阿新 • • 發佈:2017-09-03
strac 就會 使用 rgs 筆記 inter bstr blog ring
只能由實現了接口的子類並覆蓋了接口中所有的抽象方法後,該子類才可以實例化。
否則,這個子類就是一個抽象類。
abstract class AbsDemo { abstract void show1(); abstract void show2(); }
當一個抽象類中的方法都是抽象的時候,這時可以將該抽象類用另一種形式定義和表示-----接口 interface
定義接口使用的關鍵字不是class,是interface。
對於接口當中常見的成員:而且這些成員都有固定的修飾符
1. 全局常量:public static final
2. 抽象方法:public abstract
由此得出結論,接口中的成員都是公共的權限。
interface Demo { public static final int NUM = 4; public abstract void show1(); public abstract void show2(); }
如果接口中不寫固定修飾符,如下:
interface Demo { int NUM = 4; void show1(); void show2(); }
編譯的時候就會自動給你加上,所以這樣寫也是可以的。
但是不推薦這樣寫,影響閱讀性。
實現implements
interface Demo { public static final int NUM = 4; public abstract void show1(); public abstract void show2(); }
類與類之間是繼承關系,類與接口之間是實現關系。
接口不可以實例化。
否則,這個子類就是一個抽象類。
class DemoImpl implements /*實現*/ Demo { public void show1() {} public void show2() {} } class InterfaceDemo { public static void main(String[] args) { DemoImpl d = new DemoImpl(); System.out.println(d.NUM); System.out.println(DemoImpl.NUM); System.out.println(Demo.NUM); //這3中輸出方法都可以 } }
多實現
在java中不直接支持多繼承,因為會出現調用的不確定性。
所以java將多繼承機制進行改良,在java中變成了多實現。
一個類可以實現多個接口。
interface A { public abstract void show(); } interface Z { public abstract void show(); } class Test implements A,Z //多實現 { public void show()//把上面兩個show方法都覆蓋了. { } }
一類在繼承另一個類的同時,還可以實現多個接口。
class Q { public void method() {} } class Test2 extends Q implements A,Z { } //接口的出現避免了單繼承的局限性 class InterfaceDemo { public static void main(String[] args) { Test t = new Test(); t.show(); } }
interface CC { void show(); } interface MM { void method(); } interface QQ extends CC,MM //接口與接口之間是繼承關系,可以多繼承,因為沒有方法體 { }
筆記本電腦使用
為了擴展筆記本的功能,但日後出現什麽功能設備不知道。
就定義一個規則,只要日後出現的設備都符合這個規則就可以了。
規則在java中就是接口。
interface USB//暴漏的規則 { public void open(); public void close(); } class BookPC { public static void main(String[] args) { //useMouse(null); useUSB(new Upan()); //一年後 功能擴展 //接口類型的引用,用於接收(指向)接口的子類對象. useUSB(new UsbMouse()); } //使用規則 public static void useUSB(USB u) { u.open(); u.close(); } } //一年後,買了一個U盤 //實現規則 class Upan implements USB { public void open() { System.out.println("upan open"); } public void close() { System.out.println("upan close"); } } //這就是前期對外開放的接口,後期可以使用進來的設備 class UsbMouse implements USB { public void open() { System.out.println("UsbMouse open"); } public void close() { System.out.println("UsbMouse close"); } }
Java學習個人備忘錄之接口