一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|

服務器之家 - 編程語言 - JAVA教程 - 細數Java接口的概念、分類及與抽象類的區別

細數Java接口的概念、分類及與抽象類的區別

2020-06-30 11:18jingxian 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、普通接口(含有方法定義)public interface ActionListener{public abstract void actionPerformed(ActionEvent event);}

2、標識接口(無任何方法和屬性定義)標識接口是沒有任何方法和屬性的接口.標識接口不對實現它的類有任何語義上的要求,它僅僅表明實現它的類屬于一個特定的類型。

public interface Serializable{};3、常量接口是指用Java接口來聲明一些常量,然后由實現這個接口的類使用這些常量。

public interface AppConstants{public static final DATA_SOURCE_NAME="test";public static final USER_NAME="test";public static final PASSWORD="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中接口的實現類的實例。

public interface B   {   }

public class C implements B   {   }

public class A   {  B a = new C();  }

2、Java接口本身必須非常穩定,Java接口一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響3、用抽象類來定制系統中的擴展點,抽象類來完成部分實現,還要一些功能通過它的子類來實現

以上這篇細數Java接口的概念、分類及與抽象類的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2021国产精品露脸在线 | 青春娱乐国产分类精品二 | 国产精品自在欧美一区 | 动漫人物差差差动漫人物免费观看 | 激情五月开心 | 欧美侏儒xxx | 德国高清freexxxx性 | 草草影院永久在线观看 | 国产精品高清视亚洲一区二区 | 日本亚洲欧洲高清有码在线播放 | 万域之王动漫在线观看全集免费播放 | 舔大逼| 久久偷拍免费2017 | 6080午夜| 五月天精品在线 | 含羞草国产亚洲精品岁国产精品 | 俄罗斯一级在线播放 | 国产精品天天在线 | 911亚洲精品国内自产 | 日本免费一区二区三区四区五六区 | 青青草国产一区二区三区 | 亚洲一区二区三区深夜天堂 | 成人在线免费观看视频 | 国内精品露脸在线视频播放 | 国产草草视频 | 欧美国产日本精品一区二区三区 | 国产一区二区播放 | 帅老头恋帅老头同性tv | 亚洲精品一区制服丝袜 | 天天干夜夜拍 | 国色天香社区在线视频播放 | sxx免费看视频在线播放 | 日韩一区在线播放 | 四虎影视免费观看 | 5555kkkk香蕉在线观看 | 四虎成人免费大片在线 | 99re8在这里只有精品2 | 久久中文骚妇内射 | 国产亚洲精品美女 | 亚洲日本中文字幕天天更新 | 91精品国产9l久久久久 |