abstract關(guān)鍵字--java16(14/12/2015)

為什么要使用抽象類?

抽象類是用來模型化那些父類無法確定全部實現(xiàn),而是通過子類提供其全部實現(xiàn)的對象的類。例如父類是幾何圖形,任何幾何圖形都有不同的面積計算方法。所以在父類中做個抽象的定義,在每一個子類中重寫該計算面積的方法。


abstract:抽象的??梢杂脕硇揎楊?、方法

1、abstract修飾類:抽象類

1)不可被實例化

2)抽象類有構(gòu)造器(凡是類都有構(gòu)造器)

3)抽象方法所在的類,一定是抽象類

4)抽象類可以沒有抽象方法

>當(dāng)我們設(shè)計一個類時,不需要創(chuàng)建此類的實例時,就可以考慮將其設(shè)置為抽象,由其子類來實現(xiàn)這個類的抽象。

2、abstract修飾方法:抽象方法

1)格式:沒有方法體,包括{ },如:public abstract void eat( );

2)抽象方法只保留方法的功能,而具體的執(zhí)行,交給繼承抽象類的子類,由子類重寫此抽象方法。

3)若子類繼承了抽象類,并重寫了所有的抽象方法,則此類是一個“實體類”,即可以實例化。

4)若子類繼承了抽象類,沒有重寫所有的抽象方法,意味著此類中仍有抽象方法,則此類必須聲明為抽象的!

-------------------------------

abstract ? ? 不能用來修飾屬性、構(gòu)造器、private、final、static

修飾屬性:不可以,abstract用來修飾屬性沒有意義,因為抽象類是需要在其繼承的子類中進行重寫的,而方法不管子類是否重寫,都不會覆蓋父類的屬性,所以沒必要抽象。所以子類便不能覆蓋(重寫)聲明為private的方法;

修飾構(gòu)造器:不可以,因為構(gòu)造器不能夠被重寫;

修飾private方法:不可以,因為private不能跨類訪問,所以哪怕在子類里面有父類的私有方法,也不被認(rèn)為是重寫;

修飾final:不行,定義成final本身就不能被重寫,而抽象又需要被重寫,所以矛盾;

修飾static:聲明成靜態(tài)的可以通過類來調(diào)用,但是抽象類里面沒有方法體,所以通過類來調(diào)用靜態(tài)的沒有什么意義。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容