-----------模式是思想的體現,而非詳細的實現。
抽象的講,類的接口是類同意其它類對象訪問的方法與字段集。接口通常代表一種承諾,即方法須要實現接口方法名表示的操作,遵循代碼凝視和其它文檔說明。類的實現就是方法體中的代碼。
java不同意多重繼承,也就是說一個子類僅僅能有一個父類。Son extends FatherA,FatherB 是錯誤的為了彌補這點不足,java同意實現多個接口。 接口就是給出一些沒有內容的方法,類似於C++中的虛類。到詳細用的時候再由用的方法自定義內容,要注意的是想用接口必須實現接口的全部方法。
事實上是由於java不支持多繼承才產生了接口。接口是用來規范類的它能夠避免類在設計上的不一致,這在多人合作的開發中猶為重要,就比方接口中有A方法,那么實現這個接口就必須實現A方法,這就形成了一種規范,也就是說。A繼承了B。但卻想使用C的一個方法,但又不能再繼承,所以就使用了C的接口。
Java接口和Java抽象類代表的就是抽象類型,就是我們須要提出的抽象層的詳細表現。OOP面向對象的編程。假設要提高程序的復用率,添加程序的可維護性。可擴展性,就必須是面向接口的編程,面向抽象的編程,正確地使用接口、抽象類這些太實用的抽象類型做為你結構層次上的頂層。
=============================================================================================
Java接口和Java抽象類有太多相似的地方。又有太多特別的地方。到底在什么地方,才是它們的最佳位置呢?把它們比較一下,你就能夠發現了。
1、Java接口和Java抽象類最大的一個差別,就在於Java抽象類能夠提供某些方法的部分實現,而Java接口不能夠。這大概就是Java抽象類唯一的長處吧,但這個長處很實用。假設向一個抽象類里增加一個新的詳細方時。那么它全部的子類都一下子都得到了這個新方法,而Java接口做不到這一點。假設向一個Java接口里增加一個新方法,全部實現這個接口的類就無法成功通過編譯了,由於你必須讓每個類都再實現這種方法才行,這顯然是Java接口的缺點。
2、一個抽象類的實現僅僅能由這個抽象類的子類給出,也就是說,這個實現類處在抽象類所定義出的繼承的等級結構中,而因為Java語言的單繼承性,所以抽象類作為類型定義工具的效能大打折扣。
在這一點上。Java接口的優勢就出來了。不論什么一個實現了一個Java接口所規定的方法的類都能夠具有這個接口的類型,而一個類能夠實現隨意多個Java接口,從而這個類就有了多種類型。
3、從第2點不難看出,Java接口是定義混合類型的理想工具。混合類表明一個類不只具有某個主類型的行為。並且具有其它的次要行為。
4、結合1、2點中抽象類和Java接口的各自優勢。
最精典的設計模式就出來了:聲明類型的工作仍然由Java接口承擔,可是同一時候給出一個Java抽象類,且實現了這個接口,而其它同屬於這個抽象類型的詳細類能夠選擇實現這個Java接口,也能夠選擇繼承這個抽象類,也就是說在層次結構中,Java接口在最上面,然后緊跟着抽象類。哈,這下兩個的最大長處都能發揮到極至了。這個模式就是“缺省適配模式”。
在Java語言API中用了這樣的模式,並且全都遵循一定的命名規范:Abstract +接口名。
Java接口和Java抽象類的存在就是為了用於詳細類的實現和繼承的,假設你准備寫一個詳細類去繼承還有一個詳細類的話,那你的設計就有非常大問題了。Java抽象類就是為了繼承而存在的,它的抽象方法就是為了強制子類必須去實現的。使用Java接口和抽象Java類進行變量的類型聲明、參數是類型聲明、方法的返還類型說明。以及數據類型的轉換等。而不要用詳細Java類進行變量的類型聲明、參數是類型聲明、方法的返還類型說明。以及數據類型的轉換等。
我想,假設你編的代碼里面連一個接口和抽象類都沒有的話。或許我能夠說你根本沒實用到不論什么設計模式,不論什么一個設計模式都是和抽象分不開的,而抽象與Java接口和抽象Java類又是分不開的。
java將接口概念提升為獨立的結構。體現了接口(對象必須遵循的承諾)與實現(對象怎樣履行承諾)的分離。
java接口同意多個類提供同樣的功能,也同意一個類同一時候實現多個接口。
java中抽象類與接口的差別:
1.一個類能夠實現多個接口,但卻僅僅能繼承最多一個抽象類。
2.抽象類能夠包括詳細方法。接口的全部方法都是抽象的。
3.抽象類中能夠聲明和使用字段。接口則不能能,但能夠創建靜態的final常量。
4.抽象類中的方法能夠是public、protected、private或者默認的package,接口的方法都是public.
5.抽象類能夠定義構造函數,接口不能。
java接口的優勢在於它限制了對象之間的協作。這樣的約束事實上提供了更大的自由。即使實現接口的類的實現發生了巨大變化,接口的client仍然能夠不受影響。
小結:
接口的威力在於它描寫敘述了在類協作中它所期望與不期望的行為。接口與抽象類非常相似,定義行為卻並不提供實現。