更新時(shí)間:2020-10-27 17:44:20 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1434次
我們都知道java是面向?qū)ο蟮挠?jì)算機(jī)語(yǔ)言,在面向?qū)ο蟮母拍钪校械膶?duì)象都是由類來(lái)描述的,但是所有的類都是用來(lái)描述對(duì)象的嗎?答案并不是,這個(gè)時(shí)候就有了java抽象類的概念,下面我們來(lái)一起認(rèn)識(shí)一下java抽象類是什么,學(xué)習(xí)java抽象類的相關(guān)基礎(chǔ)知識(shí)。
在java語(yǔ)言中,如果一個(gè)類中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,用abstract關(guān)鍵字來(lái)修飾一個(gè)類時(shí),這個(gè)類就叫作java抽象類。抽象類是它的所有子類的公共屬性的集合,是包含一個(gè)或多個(gè)抽象方法的類,抽象類可以看作是對(duì)類的進(jìn)一步抽象。在面向?qū)ο箢I(lǐng)域,抽象類主要用來(lái)進(jìn)行類型隱藏。
Java抽象類有以下五個(gè)需要知道的特點(diǎn):
(1)抽象類的修飾符必須為public或者protected,不能是private,因?yàn)閯?chuàng)建抽象類,就是要被其他類繼承,用private修飾了,則不能被子類繼承,子類便無(wú)法實(shí)現(xiàn)該方法;
(2)抽象類不能用來(lái)創(chuàng)建對(duì)象,即抽象類不能被直接實(shí)例化,要通過(guò)其普通子類進(jìn)行實(shí)例化;
(3)如果一個(gè)普通子類繼承于一個(gè)抽象父類,則該類一定要重寫(xiě)實(shí)現(xiàn)該父類的抽象方法。如果該子類仍然是一個(gè)抽象類,這也是允許的,就不必重寫(xiě)實(shí)現(xiàn)該父類的抽象方法,但必須用abstract修飾;
(4)抽象類是對(duì)整體類的抽象,包含屬性和方法;
(5)抽象類,其實(shí)是從子類中提取共性部分,然后抽象出來(lái),反之,子類繼承該父類就可以了,也就是說(shuō)里面的抽象方法一般來(lái)自同一個(gè)類別。
那么使用java抽象類的方法是什么呢?分為一般方法和抽象方法。抽象方法的定義與一般方法不同,抽象方法在方法頭后直接跟分號(hào),而一般方法含有以大括號(hào)框住的方法體。所有的抽象方法必須存在于抽象類中。在抽象類中定義的方法稱為抽象方法,這些方法只有方法頭的聲明,而用一個(gè)分號(hào)來(lái)代替方法體的定義,即只定義成員方法的接口形式,而沒(méi)有具體操作。只有派生類對(duì)抽象成員方法的重定義才能真正實(shí)現(xiàn)與該派生類相關(guān)的操作。在各子類繼承了父類的抽象方法之后,再分別用不同的語(yǔ)句和方法體來(lái)重新定義它,形成若干個(gè)名字相同、返回值相同、參數(shù)列表相同、目的一致但是具體實(shí)現(xiàn)有一定差別的方法。抽象類中定義抽象方法的目的是實(shí)現(xiàn)一個(gè)接口,即所有的子類對(duì)外都呈現(xiàn)一個(gè)相同名字的方法。
以上是對(duì)java抽象類基礎(chǔ)知識(shí)的總結(jié),java零基礎(chǔ)的新手在學(xué)完面向?qū)ο蠛缶涂梢岳斫鈐ava抽象類的含義了。除了學(xué)習(xí)這篇文章中介紹的java抽象類概念、特點(diǎn)和實(shí)現(xiàn)方法外,還可以在java教程中學(xué)習(xí)更多的抽象類相關(guān)知識(shí),比如純虛函數(shù)和抽象類的關(guān)系、java抽象類實(shí)例化等等的內(nèi)容,希望大家都可以通過(guò)自己的努力全面掌握到抽象類的知識(shí),提高java技能。
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