- Java中接口和抽象類(lèi)的異同 推薦度:
- 相關(guān)推薦
Java中的抽象類(lèi)
導(dǎo)語(yǔ):抽象方法是沒(méi)有方法體的,這樣的調(diào)用無(wú)意義。那么Java中的抽象類(lèi)有什么意義呢?讓我們了解一下吧!
(1)多個(gè)類(lèi)有相同的方法聲明,但是方法體不一樣。這個(gè)時(shí)候,我們考慮把方法聲明進(jìn)行抽取。
讓子類(lèi)繼承后,自己去實(shí)現(xiàn)方法體。沒(méi)有方法體的方法,我們需要用抽象標(biāo)志下。
抽象的關(guān)鍵字是:abstract。
(2)抽象類(lèi):
該方法稱(chēng)為抽象方法,包含抽象方法的類(lèi)就是抽象類(lèi)。
(3)抽象類(lèi)的特點(diǎn):
A:抽象類(lèi)和抽象方法都要用abstract進(jìn)行修飾
B:抽象類(lèi)不能被實(shí)例化
C:抽象類(lèi)中不一定有抽象方法,但是,有抽象方法的類(lèi)一定是抽象類(lèi)。
(4)抽象類(lèi)中數(shù)據(jù)的特點(diǎn)
A:成員變量
抽象類(lèi)中可以有變量,也可以有常量。
B:成員方法
抽象類(lèi)中可以有抽象方法,也可以有非抽象方法。
C:構(gòu)造方法
抽象類(lèi)是一個(gè)類(lèi),所以,它有構(gòu)造方法。
雖然本身不能實(shí)例化。但是可以給子類(lèi)實(shí)例化使用。
(5)抽象類(lèi)中的問(wèn)題
A:抽象類(lèi)中是否有構(gòu)造方法?能不能被實(shí)例化?如果不能,為什么有構(gòu)造方法?
抽象類(lèi)有構(gòu)造方法。
抽象類(lèi)不能被實(shí)例化。
抽象類(lèi)中的構(gòu)造方法供子類(lèi)實(shí)例化調(diào)用。
B:抽象關(guān)鍵字abstract不可以和哪些關(guān)鍵字共存?
**private:
私有內(nèi)容子類(lèi)繼承不到,所以,不能重寫(xiě)。
但是abstract修飾的方法,要求被重寫(xiě)。兩者沖突。
**final
final修飾的方法不能被重寫(xiě)。
而abstract修飾的方法,要求被重寫(xiě)。兩者沖突。
**static
假如一個(gè)抽象方法能通過(guò)static修飾,那么這個(gè)方法,就可以直接通過(guò)類(lèi)名調(diào)用。
而抽象方法是沒(méi)有方法體的,這樣的調(diào)用無(wú)意義。所以,不能用static修飾。
C:抽象類(lèi)中可不可以沒(méi)有抽象方法?如果可以,這樣的類(lèi)有什么用嗎?
抽象類(lèi)可以沒(méi)有抽象方法。
抽象類(lèi)中沒(méi)有抽象方法的作用,只是為了不讓別的類(lèi)建立該抽象類(lèi)對(duì)象。這個(gè)在awt中有體現(xiàn)。
【Java中的抽象類(lèi)】相關(guān)文章:
Java中接口和抽象類(lèi)的異同08-12
java繼承抽象類(lèi)07-28
抽象類(lèi)java的概念理解05-24
理解Java的接口與抽象類(lèi)06-22
Java抽象類(lèi)和接口的比較08-01
php中抽象類(lèi)與抽象方法的用法07-15
java中反射機(jī)制05-26