千鋒教育Java入門(mén)全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

14、抽象類(lèi)和抽象方法
當(dāng)父類(lèi)的某些方法,需要聲明,但是又不確定如何實(shí)現(xiàn)時(shí),可以將其聲明為抽
象方法,那么這個(gè)類(lèi)就是抽象類(lèi)
//即: 父類(lèi)方法不確定性的問(wèn)題 //===> 考慮將該方法設(shè)計(jì)為抽象(abstract)方法 //===> 所謂抽象方法就是沒(méi)有實(shí)現(xiàn)的方法 //===> 所謂沒(méi)有實(shí)現(xiàn)就是指,沒(méi)有方法體 //===> 當(dāng)一個(gè)類(lèi)中存在抽象方法時(shí),需要將該類(lèi)聲明為abstract類(lèi) //===>一般來(lái)說(shuō),抽象類(lèi)會(huì)被繼承,由其子類(lèi)來(lái)實(shí)現(xiàn)抽象方法。
14.1抽象類(lèi):
1、必須是父類(lèi)---抽取共同部分來(lái)做父類(lèi)
2、抽象類(lèi)不允許實(shí)例化---抽象父類(lèi)是一個(gè)抽象概念,實(shí)例化之后會(huì)有問(wèn)題
4、抽象類(lèi)可以沒(méi)有abstract方法,可以有能實(shí)現(xiàn)的方法
5、一旦類(lèi)包含了abstract方法,則這個(gè)類(lèi)必須聲明為abstract
6、abstract 只能修飾類(lèi)和方法,不能修飾屬性和其它的
7、抽象類(lèi)可以有任意成員[抽象類(lèi)本質(zhì)還是類(lèi)],比如: 非抽象方法、構(gòu)造器
、靜態(tài)屬性等等
8、抽象方法不能有主體,即不能實(shí)現(xiàn),方法沒(méi)有{方法體}
9、抽象類(lèi)可以有構(gòu)造函數(shù),子類(lèi)調(diào)用
10、如果一個(gè)類(lèi)繼承了抽象類(lèi),則它必須實(shí)現(xiàn)抽象類(lèi)的所有抽象方法,除非它自己也聲明為abstract類(lèi)
abstract class F extends E { ?? } class G extends E { @Override public void hi(){ ??//這里相當(dāng)于G子類(lèi)實(shí)現(xiàn)了父類(lèi)E的抽象方法,所謂實(shí)現(xiàn)方法,就是有方法體 }
11、抽象類(lèi)能完成的,普通類(lèi)都能完成。
12、抽象類(lèi)能繼承抽象類(lèi)
13、抽象方法不能使用private、final 和 static來(lái)修飾,因?yàn)檫@些關(guān)鍵字都是和重寫(xiě)相違背的.
14.2抽象方法:
1、用abstract修飾的方法
2、抽象方法沒(méi)有方法體——必須是子類(lèi)實(shí)現(xiàn)方法
(本地方法native也沒(méi)有方法體)——調(diào)操作系統(tǒng)的方法
3、抽象方法一定被非抽象子類(lèi)重寫(xiě)
抽象子類(lèi)可能重寫(xiě)父類(lèi)的抽象方,目的是讓子類(lèi)減少重寫(xiě)。
4、抽象方法所在的類(lèi)一定是抽象類(lèi)
5、抽象類(lèi)中可以沒(méi)有抽象方法,一般是設(shè)計(jì)初期
6、抽象類(lèi)可以繼承普通類(lèi),也可以繼承抽象類(lèi)
7、抽象類(lèi)不能是final
8、抽象類(lèi)類(lèi)寫(xiě)靜態(tài)方法