package cn.china; abstract class AbsDemo{ abstract void show1(); abstract void show2(); } /** *當一個抽象類中的方法都是抽象的時候,這時能夠將該抽象類用 *另外一種形式定義和表示,就是 接口 interface * *定義接口使用的關鍵字不是class,是interface。 **/ interface Demo5{ public static final int NUMBER=4; public abstract void show1(); public abstract void show2(); } /** * 類與類之間是繼承關係,類與接口是實現關係。 * 接口不能實例化 * 只能由實現了接口的子類並覆蓋了接口中全部的抽象方法後,該子類才能夠實例化 * 不然,這個子類就是一個抽象類*/ class DemoImpl implements Demo5{ public void show1(){} public void show2(){} } /** * 對於接口當中常見的成員,並且這些成員都有固定的修飾符 * 一、全局常量:public static final * 二、抽象方法 public abstract * 由此得出結論,接口中的成員都是公共的權限。*/ /** * java中不支持多繼承,由於會出現調用的不肯定性。 * 因此java將多繼承進行改良,java中變成多實現。 * 一個類能夠實現多個接口*/ interface Aa{ public abstract void show6(); } interface Bb{ public abstract void show6(); } class Test1 implements Aa,Bb{ public void show6(){ } } /** * 一個類在繼承另外一個類的同時,還能夠實現多個接口 * 接口與接口*/ class q{ public void method(){} } class Test2 extends q implements Aa,Bb{ public void show6(){ } interface cc{ void showa(); } interface mm{ void showb(); } interface qq extends cc,mm{//接口與接口能夠多繼承關係,並且接口能夠多繼承 void function(); } class ww implements qq{ public void showa(){} public void showb(){} public void function(){} } } /** * 抽象類與接口的異同點: * 相同點:都是不斷向上抽取而來的 * 不一樣點: * 一、抽象類須要被單繼承abstract,接口須要被多實現implements * 二、抽象類中能夠定義抽象方法和非抽象方法,此類繼承後能夠直接使用非抽象方法。 * 接口中只能定義抽象方法,必須由子類去實現 * 三、抽象類是 is a關係在定義該體系共性能容;接口是like a關係,定義體系的額外功能。 * * 例: 學生有學習功能 能夠被提取定義抽象類 ; * 學生抽菸功能, 是額外功能 使用interface 接口定義 * * 例: * 犬按功能分,有導盲犬,搜救犬 * abstract class 犬{ * abstract void 吼叫(); * } * class 導盲犬 extends 犬 implements 導盲{ * public void 吼叫(){} * public void 導盲(){} * } * interface 導盲{ * abstract void 導盲(); * }*/ //在不一樣的問題領域中,有不一樣的分析方式。 /** * 筆記本電腦使用, * 爲了擴展筆記本功能,擔往後出現什麼功能設備不知道 * * 定義一個規則,只要往後出現的設備都符合這個規則就能夠了 * 規則在java中就是接口 interface*/ // class Mouse{ // // } //class Bookpc{ // public static void main(String[]args){ // useMouse(new Mouse()); // } // public static void useMouse(Mouse m){ // m.open(); // } //} interface USB{ //暴漏規則 public abstract void open(); public abstract void close(); } public class Interface{ public static void main(String[]args){ // DemoImpl D=new DemoImpl(); // System.out.println(D.NUMBER); // System.out.println(DemoImpl.NUMBER); // System.out.println(Demo.NUMBER); // TODO Auto-generated method stub // Test1 t=new Test1(); // t.show6(); //useUSB(null); UPan U=new UPan(); useUSB(U);//功能擴展了 } //使用規則 public static void useUSB(USB u){//接口類型的引用,用於接收(指向)接口子類的對象。 u.open(); u.close(); } //實現規則 class UPan implements USB{ public void open(){ System.out.println("UPan open"); } public void close(){ System.out.println("UPan close"); } } }