偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

漫談Java語言的接口與類型安全

開發(fā) 后端
本文介紹的是java語言的接口和類型安全方面的內(nèi)容,希望對你有幫助,一起來看。

接口是實(shí)現(xiàn)構(gòu)件可插入性的關(guān)鍵,可插入構(gòu)件的關(guān)鍵在于存在一個(gè)公用的接口,以及每個(gè)構(gòu)件實(shí)現(xiàn)了這個(gè)接口。下面介紹java語言的接口相關(guān)方面的知識。

什么是接口?

Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。

接口的兩種含義:

一,Java接口,Java語言中存在的結(jié)構(gòu),有特定的語法和結(jié)構(gòu);

二,一個(gè)類所具有的方法的特征集合,是一種邏輯上的抽象。

前者叫做“Java接口”,后者叫做“接口”。

在Java語言規(guī)范中,一個(gè)方法的特征僅包括方法的名字,參數(shù)的數(shù)目和種類,而不包括方法的返回類型,參數(shù)的名字以及所拋出來的異常。在Java編譯器檢查方法的重載時(shí),會根據(jù)這些條件判斷兩個(gè)方法是否是重載方法。但在Java編譯器檢查方法的置換時(shí),則會進(jìn)一步檢查兩個(gè)方法(分處超類型和子類型)的返還類型和拋出的異常是否相同。

接口繼承和實(shí)現(xiàn)繼承的規(guī)則不同,一個(gè)類只有一個(gè)直接父類,但可以實(shí)現(xiàn)多個(gè)接口。

Java接口本身沒有任何實(shí)現(xiàn),因?yàn)镴ava接口不涉及表象,而只描述public行為,所以Java接口比Java抽象類更抽象化。

Java接口的方法只能是抽象的和公開的,Java接口不能有構(gòu)造器,Java接口可以有public,靜態(tài)的和final屬性。

接口把方法的特征和方法的實(shí)現(xiàn)分割開來。這種分割體現(xiàn)在接口常常代表一個(gè)角色,它包裝與該角色相關(guān)的操作和屬性,而實(shí)現(xiàn)這個(gè)接口的類便是扮演這個(gè)角色的演員。一個(gè)角色由不同的演員來演,而不同的演員之間除了扮演一個(gè)共同的角色之外,并不要求其它的共同之處。

為什么使用接口?

兩個(gè)類中的兩個(gè)類似的功能,調(diào)用他們的類動態(tài)的決定一種實(shí)現(xiàn),那他們提供一個(gè)抽象父類,子類分別實(shí)現(xiàn)父類所定義的方法。

問題的出現(xiàn):Java是一種單繼承的語言,一般情況下,哪個(gè)具體類可能已經(jīng)有了一個(gè)超類,解決是給它的父類加父類,或者給它父類的父類加父類,只到移動到類等級結(jié)構(gòu)的最頂端。這樣一來,對一個(gè)具體類的可插入性的設(shè)計(jì),就變成了對整個(gè)等級結(jié)構(gòu)中所有類的修改。

接口是可插入性的保證。

在一個(gè)等級結(jié)構(gòu)中的任何一個(gè)類都可以實(shí)現(xiàn)一個(gè)接口,這個(gè)接口會影響到此類的所有子類,但不會影響到此類的任何超類。此類將不得不實(shí)現(xiàn)這個(gè)接口所規(guī)定的方法,而其子類可以從此類自動繼承這些方法,當(dāng)然也可以選擇置換掉所有的這些方法,或者其中的某一些方法,這時(shí)候,這些子類具有了可插入性(并且可以用這個(gè)接口類型裝載,傳遞實(shí)現(xiàn)了他的所有子類)。

我們關(guān)心的不是那一個(gè)具體的類,而是這個(gè)類是否實(shí)現(xiàn)了我們需要的接口。

接口提供了關(guān)聯(lián)以及方法調(diào)用上的可插入性,軟件系統(tǒng)的規(guī)模越大,生命周期越長,接口使得軟件系統(tǒng)的靈活性和可擴(kuò)展性,可插入性方面得到保證。

類型

使用Java接口將軟件單位與內(nèi)部和外部耦合起來。使用Java接口不是具體的類進(jìn)行變量的類型聲明,方法的返還類型聲明,參量的類型聲明,以及數(shù)據(jù)類型的轉(zhuǎn)換。

在理想的情況下,一個(gè)具體的Java類應(yīng)當(dāng)只實(shí)現(xiàn)Java接口和抽象Java類中聲明的方法,而不應(yīng)當(dāng)給多余方法。

類型等級結(jié)構(gòu)

Java接口(以及抽象類)一般用來作為一個(gè)類型的等級結(jié)構(gòu)的起點(diǎn)。

如果一個(gè)類已經(jīng)有了一個(gè)主要的超類型,那么通過實(shí)現(xiàn)一個(gè)接口,這個(gè)類可以擁有另一個(gè)次要的超類型,這種次要的超類型叫做混合類型。

Java接口常用方法

單方法接口

 

  1. public interface Actionlistener(){  
  2. public abstract void actionPerformed(ActionEvent event);  

 

僅且只有一個(gè)方法,只有實(shí)現(xiàn)了這個(gè)接口(重寫這個(gè)接口中的唯一一個(gè)方法),你才有資格去事件監(jiān)聽器列表里注冊(參數(shù)為Actionlistener類型),當(dāng)事件源變動時(shí),自動調(diào)用這個(gè)唯一的actionPerformed方法.

標(biāo)識接口

是沒有任何方法和屬性的接口。標(biāo)識接口不對實(shí)現(xiàn)它的類有任何語意上的要求,它僅僅表明了實(shí)現(xiàn)它的類屬于一個(gè)特定的類型(傳遞)。

不推薦過多的使用標(biāo)識接口。

常量接口

用Java接口來聲明一些常量,然后由實(shí)現(xiàn)這個(gè)接口的類使用這些常量(以前在做畫板的時(shí)候這么干過)。建議不要模仿這種常量接口的做法。

Java語言類型安全問題

Java是強(qiáng)類型的語言。這意味著Java編譯器會對代碼進(jìn)行檢查,以確定沒一次賦值,每一次方法的調(diào)用是符合類型的。如果有任何不相符合的情況,Java編譯器就會給出錯(cuò)誤。

類型檢查是基于這樣一個(gè)簡單的事實(shí):每一變量的聲明都給這個(gè)變量一個(gè)類型;每一個(gè)方法包括構(gòu)造器的聲明都給這個(gè)方法的特征。這樣一來,Java編譯器可以對任何的表達(dá)式推斷出一個(gè)明顯類型,Java編譯器可以基于明顯類型對類型進(jìn)行檢查。

Java語言是類型安全的。這就是說,任何被Java編譯器接受的合法的Java類保證是類型安全的。換言之,在程序運(yùn)行期間,不會有任何類型的錯(cuò)誤。一個(gè)Java程序根本不可能將一個(gè)本來屬于一個(gè)類型的變量當(dāng)作另一個(gè)類型處理,因此也就不會產(chǎn)生由此而引起的錯(cuò)誤。

簡單的說,Java語言依靠三種機(jī)制做到了類型安全:編譯期間的類型檢查,自動的存儲管理,數(shù)組的邊界檢查。

注:本篇大部分內(nèi)容出之閻宏老師的《Java與模式》。

希望以上內(nèi)容,能夠給你帶來幫助。

責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2013-05-15 15:05:53

2012-06-12 09:15:50

開發(fā)語言

2024-05-11 10:19:31

TypeScript類型接口

2016-11-09 21:42:14

信息安全廉環(huán)話

2016-12-22 08:28:26

IT核算預(yù)算信息安全

2016-12-08 10:14:23

信息安全變更管理廉環(huán)話

2011-06-29 10:28:48

編程語言

2016-10-13 19:11:45

Go語言Java語言

2011-12-07 14:56:18

2015-08-27 13:15:03

2015-07-14 10:58:02

SDNNFVNV

2016-11-24 08:25:41

2016-12-29 10:06:43

IT管理信息安全

2016-09-29 10:56:32

信息安全人員治理安全管理

2016-12-15 09:46:15

信息安全資源治理廉環(huán)話

2016-08-18 09:26:37

2017-09-08 06:10:50

信息安全個(gè)人信息數(shù)字化

2017-01-12 08:51:41

2022-06-12 06:46:58

身份驗(yàn)證網(wǎng)絡(luò)安全

2019-03-19 09:08:31

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號