java內部介面
⑴ java介面怎麼使用
java不允許多重繼承,也就是說一個子類只能有一個父類,
Son extends FatherA,FatherB 是錯誤的
為了彌補這點不足,java允許實現多個接廳鬧啟口,
介面就是給出一些沒有內容的方法,類似於C++中的虛類。到具體用的時候再由用的方法自己定義內容,要注意的是想用介面必須實現介面的所
有方法。
其實是因為java不支持多繼承才產生了介面
介面是用來規范類的
它可以避免類在設計上的不一致
這在多人合作的開發中猶為重要
就比彎磨如介面中有A方法
那麼實現這個介面就必須實現A方法
這就形成了一種規范
也就是說,A繼承了B,但卻想使用C的一個方法,但又不能再繼承,所以就使用了C的介面。
Java介面和Java抽象類代表的就是抽象類型,就是我們需要提出的抽象層的具體表現。OOP面向對象的編程,如果要提高程序的復用率,增加程序的可維護性,可擴展性,就必須是面向介面的編程,面向抽象的編程,正確地使用介面、抽扮如象類這些太有用的抽象類型做為你結構層次上的頂層。
Java介面和Java抽象類有太多相似的地方,又有太多特別的地方,究竟在什麼地方,才是它們的最佳位置呢?把它們比較一下,你就可以發現了。
⑵ 在java中,什麼是介面,介面的特點是什麼
Java介面(Interface),是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
一.介面含義:
1.Java介面,Java語言中存在的結構,有特定的語法和結構;2.一個類所具有的方法的特徵集合,是一種邏輯上的抽象。
前者叫做「Java介面」,後者叫做「介面」。
Java介面本身沒有任何實現,因為Java介面不涉及表象,而只描述public行為,所以Java介面比Java抽象類更抽象化。
Java介面的方法只能是抽象的和公開的,Java介面不能有構造器,Java介面可以有public,靜態的和final屬性。
二.為何用介面Java是一種單繼承的語言,若要給已有父類的具體類增加新功能,在OCP原則下,解決是給它的父類加父類,或者給它父類的父類加父類,直到移動到類等級結構的最頂端。這樣一來,對一個具體類的可插入性的設計,就變成了對整個等級結構中所有類的修改。
當有了介面,以上例子中,就不需要維護整個等級結構中的所有類了.
三.介面具胡可插入性:
在一個等級結構中的任何一個類都可以實現一個介面,這個介面會影響到此類的所有子類,但不會影響到此類的任何超類。此類將不得不實現這個介面所規定的方法,而其子類可以從此類自動繼承這些方法,當然也可以選擇置換掉所有的這些方法,或者其中的某一些方法,這時候,這些子類具有了可插入性(並且可以用這個介面類型裝載,傳遞實現了他的所有子類)。
介面提供了關聯以及方法調用上的可插入性,軟體系統的規模越大,生命周期越長,介面使得軟體系統的靈活性和可擴展性,可插入性方面得到保證。
正是有了介面,使得Java單繼承性有了新的擴展的可能(變向地實現多繼承);三.類型等級結構Java介面(以及抽象類)一般用來作為一個類型的等級結構的起點。
如果一個類已經有了一個主要的超類型,那麼通過實現一個介面,這個類可以擁有另一個次要的超類型,這種次要的超類型叫做混合類型。
四.Java介面分類
1、普通介面(含有方法定義)publicinterfaceActionListener{(ActionEventevent);}
2、標識介面(無任何方法和屬性定義)標識介面是沒有任何方法和屬性的介面.標識介面不對實現它的類有任何語義上的要求,它僅僅表明實現它的類屬於一個特定的類型。
publicinterfaceSerializable{};
3、常量介面是指用Java介面來聲明一些常量,然後由實現這個介面的類使用這些常量。
publicinterfaceAppConstants{publicstaticfinalDATA_SOURCE_NAME="test";publicstaticfinalUSER_NAME="test";publicstaticfinalPASSWORD="test";}
五.介面的特點
1、Java介面中的成員變數默認都是public,static,final類型的(都可省略),必須被顯示初始化,即介面中的成員變數為常量(大寫,單詞之間用"_"分隔)
2、Java介面中的方法默認都是public,abstract類型的(都可省略),沒有方法體,不能被實例化
3、Java介面中只能包含public,static,final類型的成員變數和public,abstract類型的成員方法
4、介面中沒有構造方法,不能被實例化5、一個介面不能實現(implements)另一個介面,但它可以繼承多個其它的介面
6、Java介面必須通過類來實現它的抽象方法
7、當類實現了某個Java介面時,它必須實現介面中的所有抽象方法,否則這個類必須聲明為抽象類
8、不允許創建介面的實例(實例化),但允許定義介面類型的引用變數,該引用變數引用實現了這個介面的類的實例
9、一個類只能繼承一個直接的父類,但可以實現多個介面,間接的實現了多繼承.
六.Java介面和Java抽象類區別面向對象設計的重點在於抽象。抽象類與介面都位於繼承樹的上層。
相同點:
1、代表系統的抽象層,當一個系統使用一顆繼承樹上的類時,應該盡量把引用變數聲明為繼承樹的上層抽象類型,這樣可以提高兩個系統之間的送耦合
2、都不能被實例化
3、都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,但不包含方法體不同點:
1、最大的一個區別,就在於Java抽象類可以提供某些方法的部分實現,而Java介面不可以;這大概就是Java抽象類唯一的優點吧,但這個優點非常有用。
可以向抽象類里加入一個新的具體方法,所有的子類都自動得到這個方法;但Java介面里加入一個新方法,所有實現這個介面的類就無法成功通過編譯,必需手動給每個實現了該介面的類加上該方法的實現;
2、抽象類的實現只能由子類給出,也即該實現只能在抽象類定義的繼承的等級結構中;所以抽象類作為類型定義工具的效能大打折扣。
Java介面,任何一個實現了一個Java介面所規定的方法的類都可以具有這個介面的類型,而一個類可以實現任意多個Java介面,從而這個類就有了多種類型。
以上看出:Java介面是定義混合類型的理想工具,混合類表明一個類不僅僅具有某個主類型的行為,而且具有其他的次要行為。
3、結合1、2點中抽象類和Java介面的各自優勢,具精典的設計模式就出來了:
聲明類型的工作仍然由Java介面承擔,但是同時給出一個Java抽象類,且實現了這個介面,而其他同屬於這個抽象類型的具體類可以選擇實現這個Java介面,也可以選擇繼承這個抽象類,也就是說在層次結構中,Java介面在最上面,然後緊跟著抽象類,這下兩個的最大優點都能發揮到極至了。這個模式就是「預設適配模式」。
在Java語言API中用了這種模式,而且全都遵循一定的命名規范:Abstract+介面名。
七.使用介面和抽象類的總體原則:
1、用介面作為系統與外界交互的窗口站在外界使用者(另一個系統)的角度,介面向使用者承諾系統能提供哪些服務,站在系統本身的角度,介面制定系統必須實現哪些服務,介面是系統中最高層次的抽象類型.通過介面交互可以提高兩個系統之間的送耦合系統A通過系統B進行交互,是指系統A訪問系統B時,把引用變數聲明為系統B中的介面類型,該引用變數引用系統B中介面的實現類的實例。
publicinterfaceB{}
publicclassCimplementsB{}
publicclassA{Ba=newC();}
2、Java介面本身必須非常穩定,Java介面一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響3、用抽象類來定製系統中的擴展點,抽象類來完成部分實現,還要一些功能通過它的子類來實現
⑶ java介面作用是什麼
介面是一種規范
軟體開發大多是一個協作性的工作:電器和插座分別是不同人完成的,有了介面大家就能分頭開干,都按照介面來辦事,各自做完就能輕松地整合到一起。各部分的測試也更加方便。
介面在開發過程中可以快速分離工作內容。
比如調用者在寫業務邏輯的時候需要一個功能,可能是資料庫訪問,或者復雜計算,但是他的工作專注於實現業務邏輯,不想分開精力去做底層實現,那麼他只需要先實現一個介面,定義了規范,然後就可以繼續他的業務邏輯代碼了。而實現者可以根據這個介面規范,做具體的實現。
這樣通過使用介面就可以快速的分離工作內容,達到團隊並行工作的目的。
(3)java內部介面擴展閱讀:
功能
在Java語言規范中,一個方法的特徵僅包括方法的名字,參數的數目和種類,而不包括方法的返回類型,參數的名字以及所拋出來的異常。在Java編譯器檢查方法的重載時,會根據這些條件判斷兩個方法是否是重載方法。
但在Java編譯器檢查方法的置換時,則會進一步檢查兩個方法(分處超類型和子類型)的返還類型和拋出的異常是否相同。
介面實現和類繼承的規則不同,為了數據的安全,繼承時一個類只有一個直接父類,也就是單繼承,但是一個類可以實現多個介面,介面彌補了類的不能多繼承缺點,繼承和介面的雙重設計既保持了類的數據安全也變相實現了多繼承。
Java介面本身沒有任何實現,因為Java介面不涉及表象,而只描述public行為,所以Java介面比Java抽象類更抽象化。但是介面不是類,不能使用new 運算符實例化一個介面。
⑷ java 應用程序介面(api)是什麼