您好,登錄后才能下訂單哦!
java中的抽象類(lèi)有什么作用?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
Java語(yǔ)言中,用abstract 關(guān)鍵字來(lái)修飾一個(gè)類(lèi)時(shí),這個(gè)類(lèi)叫作抽象類(lèi)。抽象類(lèi)是它的所有子類(lèi)的公共屬性的集合,是包含一個(gè)或多個(gè)抽象方法的類(lèi)。
抽象類(lèi)可以看作是對(duì)類(lèi)的進(jìn)一步抽象。在面向?qū)ο箢I(lǐng)域,抽象類(lèi)主要用來(lái)進(jìn)行類(lèi)型隱藏。
人們往往用建立抽象類(lèi)的方法為一組類(lèi)提供統(tǒng)一的界面。抽象類(lèi)的概念來(lái)源于現(xiàn)實(shí)生活之中。這就使我們能在一個(gè)更高、更抽象的級(jí)別上考慮問(wèn)題,從而簡(jiǎn)化了問(wèn)題的復(fù)雜性。
在Java程序中用抽象類(lèi)(abstract class)來(lái)實(shí)現(xiàn)自然界的抽象概念。抽象類(lèi)的作用在于將許多有關(guān)的類(lèi)組織在一起,提供一個(gè)公共的類(lèi),而那些被組織在一起的具體的類(lèi)作為其子類(lèi)而派生出來(lái)。抽象類(lèi)刻畫(huà)了公有行為的特征,并通過(guò)繼承機(jī)制傳送給它的派生類(lèi)。
抽象類(lèi)是它的所有子類(lèi)的公共屬性的集合,是包含一個(gè)或多個(gè)抽象方法的類(lèi)。抽象類(lèi)可以看作是對(duì)類(lèi)的進(jìn)一步抽象。
作用:
抽象類(lèi)往往用來(lái)表征對(duì)問(wèn)題領(lǐng)域進(jìn)行分析、設(shè)計(jì)中得出的抽象概念,是對(duì)一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。
1.因?yàn)槌橄箢?lèi)不能實(shí)例化對(duì)象,所以必須要有子類(lèi)來(lái)實(shí)現(xiàn)它之后才能使用。這樣就可以把一些具有相同屬性和方法的組件進(jìn)行抽象,這樣更有利于代碼和程序的維護(hù)。
比如本科和研究生可以抽象成學(xué)生,他們有相同的屬性和方法。這樣當(dāng)你對(duì)其中某個(gè)類(lèi)進(jìn)行修改時(shí)會(huì)受到父類(lèi)的限制,這樣就會(huì)提醒開(kāi)發(fā)人員有些東西不能進(jìn)行隨意修改,這樣可以對(duì)比較重要的東西進(jìn)行統(tǒng)一的限制,也算是一種保護(hù),對(duì)維護(hù)會(huì)有很大的幫助。
2.當(dāng)又有一個(gè)具有相似的組件產(chǎn)生時(shí),只需要實(shí)現(xiàn)該抽象類(lèi)就可以獲得該抽象類(lèi)的那些屬性和方法。
比如學(xué)校又新產(chǎn)生了專(zhuān)科生這類(lèi)學(xué)生,那么專(zhuān)科生直接繼承學(xué)生,然后對(duì)自己特有的屬性和方法進(jìn)行補(bǔ)充即可。這樣對(duì)于代碼的重用也是很好的體現(xiàn)。
首先從現(xiàn)實(shí)世界中的對(duì)象可以抽象出軟件系統(tǒng)中的對(duì)象(保留主要屬性和行為,去掉次要屬性和行為),然后從軟件系統(tǒng)中的對(duì)象可以抽象出軟件系統(tǒng)中的類(lèi)(去掉屬性值,把具體的對(duì)象變成了抽象的概念),而抽象類(lèi)則是對(duì)多個(gè)類(lèi)的抽象結(jié)果,抽象類(lèi)進(jìn)一步描述了多個(gè)具體類(lèi)的共同特征和行為。
從系統(tǒng)分析的角度,使用抽象類(lèi)可以更好地刻畫(huà)自然界的抽象概念,更有效地完成軟件系統(tǒng)與自然行為系統(tǒng)的映射,從系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)的角度,使用抽象類(lèi)可以更好地利用這些共同屬性和操作,避免代碼的重復(fù)編寫(xiě),從而減少出錯(cuò)的幾率,提高程序的開(kāi)發(fā)效率。
Java抽象類(lèi)的實(shí)現(xiàn)是通過(guò)關(guān)鍵字abstract來(lái)說(shuō)明的。其格式為:
[Modifies] abstract class ClassName {…}
其中,Modifies是修飾符,abstract是聲明抽象類(lèi)的關(guān)鍵字,class是定義類(lèi)的關(guān)鍵字,ClassName是類(lèi)名,大括號(hào)內(nèi)的省略號(hào)表示類(lèi)體部分。
其中的成員方法可以是一般的成員方法,還可以是抽象的成員方法。抽象的成員方法也是通過(guò)關(guān)鍵字abstract來(lái)說(shuō)明的。它在形式上僅有方法的頭部分,而沒(méi)有方法體,甚至用于描述方法體的一對(duì)大括號(hào)也沒(méi)有,常將這樣的形式稱(chēng)為方法的原型聲明。
其格式如下:
[Modifies] abstract returnType methodName(parameterLists);
關(guān)于java中的抽象類(lèi)有什么作用問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。