更新時(shí)間:2020-04-29 14:14:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2947次
在我們所有樂(lè)器(Instrument)例子中,基礎(chǔ)類Instrument內(nèi)的方法都肯定是“偽”方法。若去調(diào)用這些方法,就會(huì)出現(xiàn)錯(cuò)誤。那是由于Instrument的意圖是為從它衍生出去的所有類都創(chuàng)建一個(gè)通用接口。
之所以要建立這個(gè)通用接口,唯一的原因就是它能為不同的子類型作出不同的表示。它為我們建立了一種基本形式,使我們能定義在所有衍生類里“通用”的一些東西。為闡述這個(gè)觀念,另一個(gè)方法是把Instrument稱為“抽象基礎(chǔ)類”(簡(jiǎn)稱“抽象類”)。若想通過(guò)該通用接口處理一系列類,就需要?jiǎng)?chuàng)建一個(gè)抽象類。對(duì)所有與基礎(chǔ)類聲明的簽名相符的衍生類方法,都可以通過(guò)動(dòng)態(tài)綁定機(jī)制進(jìn)行調(diào)用(然而,正如上一節(jié)指出的那樣,如果方法名與基礎(chǔ)類相同,但自變量或參數(shù)不同,就會(huì)出現(xiàn)過(guò)載現(xiàn)象,那或許并非我們所愿意的)。如果有一個(gè)象Instrument那樣的抽象類,那個(gè)類的對(duì)象幾乎肯定沒(méi)有什么意義。換言之,Instrument的作用僅僅是表達(dá)接口,而不是表達(dá)一些具體的實(shí)施細(xì)節(jié)。所以創(chuàng)建一個(gè)Instrument對(duì)象是沒(méi)有意義的,而且我們通常都應(yīng)禁止用戶那樣做。為達(dá)到這個(gè)目的,可令I(lǐng)nstrument內(nèi)的所有方法都顯示出錯(cuò)消息。但這樣做會(huì)延遲信息到運(yùn)行期,并要求在用戶那一面進(jìn)行徹底、可靠的測(cè)試。無(wú)論如何,最好的方法都是在編譯期間捕捉到問(wèn)題。
針對(duì)這個(gè)問(wèn)題,Java專門(mén)提供了一種機(jī)制,名為“抽象方法”。它屬于一種不完整的方法,只含有一個(gè)聲明,沒(méi)有方法主體。下面是抽象方法聲明時(shí)采用的語(yǔ)法:abstractvoidX();
包含了抽象方法的一個(gè)類叫作“抽象類”。如果一個(gè)類里包含了一個(gè)或多個(gè)抽象方法,類就必須指定成abstract(抽象)。否則,編譯器會(huì)向我們報(bào)告一條出錯(cuò)消息。
若一個(gè)抽象類是不完整的,那么一旦有人試圖生成那個(gè)類的一個(gè)對(duì)象,編譯器又會(huì)采取什么行動(dòng)呢?由于不能安全地為一個(gè)抽象類創(chuàng)建屬于它的對(duì)象,所以會(huì)從編譯器那里獲得一條出錯(cuò)提示。通過(guò)這種方法,編譯器可保證抽象類的“純潔性”,我們不必?fù)?dān)心會(huì)誤用它。
如果從一個(gè)抽象類繼承,而且想生成新類型的一個(gè)對(duì)象,就必須為基礎(chǔ)類中的所有抽象方法提供方法定義。
如果不這樣做(完全可以選擇不做),則衍生類也會(huì)是抽象的,而且編譯器會(huì)強(qiáng)迫我們用abstract關(guān)鍵字標(biāo)志那個(gè)類的“抽象”本質(zhì)。
即使不包括任何abstract方法,亦可將一個(gè)類聲明成“抽象類”。如果一個(gè)類沒(méi)必要擁有任何抽象方法,而且我們想禁止那個(gè)類的所有實(shí)例,這種能力就會(huì)顯得非常有用。
Instrument類可很輕松地轉(zhuǎn)換成一個(gè)抽象類。只有其中一部分方法會(huì)變成抽象方法,因?yàn)槭挂粋€(gè)類抽象以后,并不會(huì)強(qiáng)迫我們將它的所有方法都同時(shí)變成抽象。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java抽象方法”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743