面向?qū)ο蠖涌?/h2>

抽象類是從多個(gè)類中抽取出來的模版,如果將這種抽象進(jìn)行的更加徹底,則可以提煉出一中更加特殊的抽象類——接口(interface),接口里不能包含普通方法,接口里的所有方法都是抽象方法。

接口的定義

接口使用interface關(guān)鍵字,基礎(chǔ)語法如:

[修飾符] interface 接口名 extends 父接口1,父接口2...
{
    零到多個(gè)常量定義...
    零到多個(gè)抽象方法定義...
}

接口里可以包含變量(只能是常量)、方法(只能是抽象實(shí)例方法)、內(nèi)部類(包括內(nèi)部接口和枚舉)定義。而且都是public訪問權(quán)限。

對(duì)于接口里定義的常量而言,它們是接口相關(guān)的,而且只能是常量,因此系統(tǒng)會(huì)自動(dòng)增加static和final 修飾符,接口里定義的變量只能在定義時(shí)指定初始化值。
接口里定義變量,以下兩句話的代碼結(jié)果完全一樣:

  int MAX_SIZE=10;
  public static final int MAX_SIZE=10;

對(duì)于接口中定義的方法而言,全部是抽象方法,不管定義接口方法時(shí)是否使用了public abstract修飾,總是默認(rèn)使用public abstract修飾。而也因此接口不允許定義靜態(tài)方法,即不可以使用static修飾。

public interface Output{
    int MAX_SIZE=10;
    void out();
    void getData(String msg);
}

接口的繼承

接口支持多繼承,即一個(gè)接口可以有多個(gè)直接父接口,和類繼承相似,子接口擴(kuò)展多個(gè)父接口,將會(huì)獲得父接口里邊定義的所以抽象方法、常量、內(nèi)部類和枚舉類定義。

格式為:多個(gè)父接口排在extends關(guān)鍵字之后,多個(gè)父接口之間使用英文逗號(hào)隔開。


image.png

接口的使用

接口不能用于創(chuàng)建實(shí)例,但接口可以用于聲明引用類型變量,當(dāng)使用接口來聲明引用類型變量時(shí),這個(gè)引用類型變量必須引用到其實(shí)現(xiàn)類的對(duì)象。除此之外,接口的主要用途是被實(shí)現(xiàn)類實(shí)現(xiàn)。

一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,使用implements關(guān)鍵字。因?yàn)橐粋€(gè)類可以實(shí)現(xiàn)多個(gè)接口,這也是java為單繼承靈活性不足所做的補(bǔ)充。類實(shí)現(xiàn)接口的語法如下:

[修飾符] class 類名 extends 父類  implements 接口1,接口2...{
    類體部分
}

一個(gè)類可以繼承一個(gè)父類,但是可以實(shí)現(xiàn)多個(gè)接口,多個(gè)接口之間使用英文逗號(hào)隔開。implements部分必須放在extends部分之后。

一個(gè)類實(shí)現(xiàn)一個(gè)或多個(gè)接口后,必須實(shí)現(xiàn)該接口全部抽象方法,也就是重寫全部抽象方法。否則,該類將保留從父接口那繼承到的抽象方法,該類也必須定義為抽象類。

實(shí)現(xiàn)接口方法時(shí),必須使用public修飾符,因?yàn)榻涌诶锏姆椒ǘ际莗ublic,而子類重寫父類方法時(shí)訪問權(quán)限只能是更多或者相等,所以實(shí)現(xiàn)類實(shí)現(xiàn)接口里的方法時(shí)只能使用public訪問權(quán)限。

接口和抽象類

接口和抽象類的相同點(diǎn):
(1)接口和抽象類都不能實(shí)例化。
(2)接口和抽象類都可以包含抽象方法,實(shí)現(xiàn)接口或繼承抽象類的普通子類都必須實(shí)現(xiàn)這些抽象方法。

不同點(diǎn):
(1)接口里只能包含抽象方法,抽象類可以包含普通方法。
(2)接口里不能定義靜態(tài)方法,抽象類可以。
(3)接口里只能定義靜態(tài)常量,不能定義普通常量、變量。抽象類都可以。
(4)接口里不包括構(gòu)造器,抽象類可以包含,并不是用于創(chuàng)建對(duì)象,而是讓其子類調(diào)用這些構(gòu)造器來完成抽象類的初始化操作。
(5)接口里不能包含初始化塊,而抽象類可以包含。
(6)一個(gè)類最多只能有一個(gè)直接父類,但一個(gè)類可以直接實(shí)現(xiàn)多個(gè)接口。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容