1.什么是接口
2.接口的定義
3.接口的特點(diǎn)
4.接口和內(nèi)部類的比較
什么是接口:
硬件接口:兩個(gè)硬件之間的鏈接方式,包括物理上的接口和邏輯上的數(shù)據(jù)傳輸協(xié)議.
軟件接口:程序代碼,特殊的類,表示一種規(guī)范,是N個(gè)方法的特征集合
接口只是定義了應(yīng)當(dāng)遵循的規(guī)范,不用關(guān)心具體的實(shí)現(xiàn)細(xì)節(jié),在程序中表示規(guī)定了類中必須提供的方法.增強(qiáng)了可拓展性和可維護(hù)性.
面向接口編程
接口和實(shí)現(xiàn)類體現(xiàn)了真正的多態(tài)
接口 變量 = 創(chuàng)建的實(shí)現(xiàn)類對象
接口的定義和使用
定義:
????多個(gè)抽象類的抽象就是接口
? ? 在java中最小的程序單元就是類,接口是一種特殊的類.接口表示一種規(guī)范,用于定義一組抽象方法,需要具備某一類事物的功能,并且實(shí)現(xiàn)類必須要實(shí)現(xiàn)接口提供的方法.
語法的定義:
? ? 類的語法:[public] class 類名{}
? ? 接口的語法:[public] interface 接口名{}
? ? ? ? 一般以:able/handler結(jié)尾,以:I開頭.
存在的成員:
? ? 接口中沒有構(gòu)造器: 接口不能創(chuàng)建對象(不能new)
? ? 接口中定義的成員變量: 全局靜態(tài)變量:public static final 修飾
? ? 接口中定義的方法: 公共的抽象方法:public abstract 修飾
? ? 接口定義的內(nèi)部類: 公共的靜態(tài)內(nèi)部類:public static 修飾
其他接口的定義:
? ? 標(biāo)志接口:接口中沒有任何的成員,僅僅是一個(gè)接口(不推薦)
? ? 常量接口:用來封裝多個(gè)常量,目的和常量類一致(不推薦)
接口的特點(diǎn):
? ? 沒有構(gòu)造方法
? ? 只能繼承接口,不能繼承類,可以多繼承
? ? 方法都是公共抽象的
? ? 字段都是全局靜態(tài)常量
? ? 內(nèi)部類都是公共靜態(tài)的
接口的繼承:
? ? 類和類之間用:extends
? ? 接口和接口之間用:extends
? ? 接口和實(shí)現(xiàn)類之間用:implements
接口的實(shí)現(xiàn): 實(shí)現(xiàn)類
? ? 接口只是提供了共同的方法,并沒有實(shí)現(xiàn)里面的內(nèi)容,我們需要提供實(shí)現(xiàn)類來覆蓋接口中的方法,實(shí)現(xiàn)接口中定義的功能.
? ? 接口和實(shí)現(xiàn)類是實(shí)現(xiàn)關(guān)系,為了方便也稱之為特殊的繼承關(guān)系,也就是說接口是實(shí)現(xiàn)類的父類.
接口和抽象類的對比
? ? 相同點(diǎn):
? ? ? ? 都位于繼承的頂端,用于被其他類繼承
? ? ? ? 都不能實(shí)例化
? ? ? ? 都定義了抽象方法,其實(shí)現(xiàn)類必須覆蓋方法
? ? 不同點(diǎn):
? ? ? ? 接口沒有構(gòu)造方法,抽象類有構(gòu)造方法
? ? ? ? 接口可以多繼承,抽象類只能單繼承
? ? ? ? 接口只能包含抽象方法,抽象類可以包含普通方法和抽象方法
? ? ? ? 接口的方法是公共抽象的,抽象類是包訪問權(quán)限
? ? ? ? 接口的字段是全局靜態(tài)的, 抽象類是包訪問權(quán)限
? ? ? ? 接口的內(nèi)部類是公共靜態(tài)的, 抽象類是包訪問權(quán)限