1、接口:一種把類抽象的更徹底,接口裡只能包含抽象方法的“特殊類”。接口不關心類的內部狀態數據,定義的是一批類所遵守的規範。 (它只規定這批類裡必須提供某些方法,提供這些方法就可以滿足實際要求)。
在JAVA編程語言中是一個抽像類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
接口並不是類,編寫接口的方式和類很相似,但是它們屬於不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
除非實現接口的類是抽像類,否則該類要定義接口中的所有方法。
接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽像類。另外,在Java中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。
定義:【修飾符】interface接口名extends父接口1,賦接口2,.......//不用extends父接口1...就是定義接口
{
//零到多個常量定義......
//零到多個抽象實例方法定義.....
}
【語法說明】: 1、修飾符可以是public或者省略,如果省略public訪問控制符,則是包訪問權限。
2、接口裡所有的成員都是public修飾,因為接口是公共的,所有類都能訪問的。接口裡屬性默認的修飾為:publicstaticfinal,不管屬性前面寫沒寫都會默認加上,同樣方法的默認修飾為:publicabstract,內部類:publicstatic。都會默認加上。
3、成員裡面不能有構造器,不能有初始化塊。
4、一個java源文件裡最多只能定義一個接口,因為其是public修飾的,存儲的名字必須和public修飾的類的名字一樣,而接口可以看成一個特殊的類。
2、接口的繼承:一個接口可以有多個直接父接口,接口只能繼承接口,不能繼承類。
【注意點】: a、子接口繼承父接口,將會獲得父接口裡定義的所有抽象方法,常量屬性,內部類等定義。
3、接口的使用:語法:【修飾符】class類名extends父類implements接口1,接口2......{類體}。
【注意事項】
a、說明:一個類可以同時繼承一個父類,和多個接口,只是extends必須放置implements之後。
b、接口不能創建實例,但是可以聲明變量,但其一定是引用到了其實現類的對象。
c、主要用途就是被類實現。
d、實現的方法:利用implements關鍵字
e、一個類繼承了一個接口之後,必須完全實現這些接口裡所定義的全部抽象方法(也就是要在子類裡面重寫這些類方法),否則,如果沒有完全實現,那麼此類也只能定義成抽像類。
f、重寫接口方法時,修飾符只能比父類更大,或者相等,所以其也必須是public修飾符。
g、所有接口類型的變量都可以直接賦給Object類型的變量。
貼上示例代碼(引用於李剛的瘋狂java):
//定義一個接口Output interface Output { //接口裡只能把屬性定義成常量int MAX_CACHE_LINE = 50;//主要是定義存儲空間//接口裡定義的只能是public的抽象方法void out(); void getData(String msg); } //定義一個接口Product interface Product { int getProduceTime(int a); } //讓printer類實現定義的接口public class Printer implements Output,Product { private String [] printData = new String[MAX_CACHE_LINE]; private int dataNum =0; public void out()//重寫父接口Output的方法{ while(dataNum>0) { System.out.println("打印機打印"+printData[0]); System.arraycopy(printData,1,printData,0,--dataNum); } } public void getData(String msg)//重寫父接口Output的方法{ if(dataNum>=MAX_CACHE_LINE) { System.out.println("已滿"); } else { printData[dataNum++] = msg; } } public int getProduceTime(int a)//重寫父接口Product的方法{ return a = a; } public static void main(String[] args) { //父接口可聲明變量,但是不能創建實例,多態:聲明的是Output,但是創建的實例是Printer Output O= new Printer(); O.getData("xiuxiu"); O.out();//直接調用輸出的方法//父接口可聲明變量,但是不能創建實例,多態:聲明的是Output,但是創建的實例是Printer Product p = new Printer(); System.out.println(p.getProduceTime(82)); //所有接口類型的引用變量都可以直接賦值給Object類型的變量Object obj = p; Object obj1 = O; } }4、抽像類和接口的異同:
相同:
1、都有抽象方法。
2、都不能創建實例。
3、子類繼承其後都必須全部實現其內的抽象方法,如果沒有全部實現的話,類只能定義成抽像類。
不相同:
1、接口裡只能有抽象方法,抽像類裡可以有普通方法。
2、接口類裡的屬性默認有修飾語publicstaticfinal,但是抽像類中的屬性可以是普通的。
3、接口沒有初始化塊,抽像類裡有。
4、接口可以有多個父接口,但是抽像類只能有一個父類。
總結
以上就是本文關於java中接口(interface)及使用方法示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。