接口的兩層含義:接口作爲數據類型 狹義的接口
接口的第二層含義:工具 廣義的接口
在接口中所有的變量都是靜態常量
在接口中所有方法都是抽象方法
定義一個接口使用關鍵字:interface
一個類要實現一個接口使用關鍵字:implements
類與類之間的關係叫做繼承
類與接口之間的關係叫做實現
一個類可以實現多個接口
01.預習
如何編寫接口?
解析:
Public interface IFly{
Public void fly();
}
接口有哪些特性?(說出2個)
解析:代表一種能力,代表一種規範
C#接口與Java接口的區別有哪些?(說出2個)
解析 : 01.C#中接口中方法不用訪問修飾符
02.Java接口中屬性是靜態常量。
Public static int num=5;
02.接口定義
01.接口是一種規範,約束實現該接口類中方法的簽名(方法名,參數列表和返回值)
02.public interface Door{
//公有的抽象方法
Public void test();
//字段必須是公有的靜態的常量
Public int age=0;
}
Public class FDDoor implements Door,Lock{
Public void test(){
}
}
03.Java中三種多態實現方案
方案一:父類是一個普通類Parent,類中一個普通方法test()
子類Child繼承父類,子類中有一個同名方法test()
Parent p=new Child();
P.test();//子類方法
方案二:父類Parent是抽象類,有一個抽象方法test()
子類Child繼承抽象類,重寫了test()
Parent p=new Child();
P.test();//子類方法
方案三:定義一個接口Parent,接口中有一個方法test()
子類實現該接口,重寫了test()
Parent p=new Child();
P.test();//子類方法
我的無奈你永遠不懂,因爲我是抽象類。
坦白的說,抽象類存在真的很不容易。在接口沒有出生的時候,抽象類還可以大言不慚的說我是規範的制定者,但是背後傳來一個聲音,你只會比手畫腳,發號施令,從來都不幹實事(沒有方法體啊)。於是抽象類就這樣被埋沒了。既然這樣,抽象接着毅然決然的尋找着自己的閃光點。但是一個個日出 換來了日落,今天的抽象類依然是抽象類。依然不可以昂頭挺胸,氣宇軒昂的向JVM索要空間~因爲抽象類永遠只能new別人,這或許就是《抽象類的傷心》吧!雖然經過種種僞裝之後,抽象類可以有所謂的對象,例如,通過靜態手段,通過子類等,但是,抽象類心裏清楚,如果創建這樣的對象,自己寧可不要。於是,抽象類再次倔強的謝絕了自己成爲對象這個事實。然而,抽象類的傷心誰能知道,看到一個一個類都new出了自己的幸福,抽象類依然在默默的尋找着自己的亮點。雖然這是一條披滿荊棘的漫漫長路,但是就像他喜歡的一句話:把握現在,珍惜當下,做真實的自己。真的希望,有一天,抽象類可以拿着麥克風大聲說,其實我是一個有用的類。我不只是別人的嫁衣,別人的陪襯。
難道在面向接口編程的今天,我抽象類真的就沒有天日可見了嗎,就因爲我不能多繼承嗎?我不服。抽象類有自己的構造函數,但是卻不能new,這種無奈誰又能懂?難道抽象類的存在只是爲了子類嗎?
然而恰恰抽象類就處於這樣一個尷尬的境地。
****************************************************************************
04.接口的注意事項
01.接口不能實例化,因爲接口是比抽象類抽象程度更好的類型
02一個類如果實現了某個接口,必須重寫該接口中的所有方法
03.接口不能有構造,但是抽象類可以有
04.接口中所有方法都公有的抽象方法
05.接口中的所有字段必須都是公有的靜態常量
06.接口本身也是一種數據類型
07.接口只是爲實現它的類定義了規範,保證實現類方法簽名和接口中對應方法一致。
08.通過接口可以實現多繼承
09.一個藉口中最好只定義一個方法,防止接口污染
05.抽象類和接口的區別
01.抽象類中可以有普通方法,接口中不能
02.抽象類可以有構造,接口不能
03.抽象類中可以有普通字段,而接口中不行
04.抽象類不能實現多繼承,接口可以
05.符合is a關係的選用抽象類,符合has a關係的選用接口
05.接口比抽象類抽象程度更高
轉載:http://www.cnblogs.com/lsy131479/