一、抽象類
1.什么叫抽象類?
例如在生活中我們都把狗和貓歸為動(dòng)物著一類中,但當(dāng)只說動(dòng)物時(shí),我們是不知道是貓還是狗還是其他的。所以動(dòng)物就是所謂的抽象類,貓和狗則是具體的類了。因此在Java中,一個(gè)沒有方法體的方法應(yīng)該定義為抽象類,而類中有抽象方法,則必須為抽象類。
2.抽象類的特點(diǎn):
- 抽象類與抽象方法必須用abstract關(guān)鍵字進(jìn)行修飾。
- 抽象類不一定會(huì)有抽象方法,而有抽象方法的類一定是抽象類。
- 抽象類不能實(shí)例化,若需實(shí)例化,參照多態(tài)的形式,通過子類來進(jìn)行實(shí)例化。
- 繼承了抽象類的子類,則需要重寫抽象類里面的所有抽象方法,要么就是抽象類才行。
3.成員特點(diǎn):
- 成員變量:可以是變量或者常量。
- 構(gòu)造方法:有構(gòu)造方法,但是不能實(shí)例化,則需要通過多態(tài)子類來進(jìn)行;其中用處是為子類訪問父類來進(jìn)行數(shù)據(jù)初始化。
- 成員方法:可以是抽象類:限定 子類必須完成的某些行為;也可以為非抽象類,可以提高代碼的復(fù)用性。
二、接口
1.接口是什么?
接口是一種公共的規(guī)范標(biāo)準(zhǔn),是表示一個(gè)類所需要的附加條件,所以只需要符合規(guī)范標(biāo)準(zhǔn),都可以運(yùn)用。Java中的接口主要體現(xiàn)于對(duì)行為的抽象。
2.接口的特點(diǎn)
- 需要用關(guān)鍵字interface來進(jìn)行修飾。
- 類的實(shí)現(xiàn)接口需要用implements來表示
- 接口不能實(shí)例化,若要實(shí)例化,則參照多態(tài)的形式來進(jìn)行實(shí)例化,稱為接口多態(tài)。因此多態(tài)的形式主要有:具體類的多態(tài),抽象多態(tài),接口多態(tài)。
- 接口的實(shí)現(xiàn)類:要么重寫接口里面的抽象方法,要么是抽象類。
3.接口的組成成員
- 1.成員變量:只能是常量,默認(rèn)由"public static final‘來進(jìn)行修飾。
- 2,構(gòu)造方法:接口沒有構(gòu)造方法,因?yàn)榻涌谥饕菍?duì)于行為進(jìn)行抽象,沒有具體的存在。
- 注意事項(xiàng):一個(gè)類沒有父類則默認(rèn)繼承Object類。
- 3.成員方法:
抽象方法:接口默認(rèn)的方法為抽象方法。默認(rèn)為public static abstract來進(jìn)行修飾。
默認(rèn)方法:默認(rèn)方法是在部分實(shí)現(xiàn)類需要添加的方法時(shí)所用到的方法,是需要在接口里面用defaul修飾,實(shí)現(xiàn)類里可以不用重寫,但重寫時(shí)是需要?jiǎng)h除default。
靜態(tài)方法:靜態(tài)方法是只能在接口中去添加,不能被實(shí)現(xiàn)類去調(diào)用,只能被接口名調(diào)用并被static修飾。
私有方法:私有方法主要是在接口里面進(jìn)行使用,有private關(guān)鍵字進(jìn)行修飾,通過將相同的代碼段寫在私有方法里面,提高了代碼的復(fù)用性和簡便性,靜態(tài)的私有方法只能用靜態(tài)來進(jìn)行修飾,非靜態(tài)的可以有非靜態(tài)和靜態(tài)方法都能修飾。
4.類與抽象的關(guān)系:
5.抽象類與接口的區(qū)別:
抽象類主要是對(duì)于事物的抽象,接口主要是對(duì)于行為的抽象。
到此這篇關(guān)于java中的抽象類和接口定義與用法詳解的文章就介紹到這了,更多相關(guān)Java 抽象類內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/weixin_46870007/article/details/120260135