面向?qū)ο笫菍?duì)接口編程,不是對(duì)實(shí)現(xiàn)編程。抽象類定義了接口,至于怎么實(shí)現(xiàn),調(diào)用者已經(jīng)不用關(guān)心了。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、彝良網(wǎng)絡(luò)推廣、微信小程序開發(fā)、彝良網(wǎng)絡(luò)營(yíng)銷、彝良企業(yè)策劃、彝良品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供彝良建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
相當(dāng)于提供了一種特定類的使用規(guī)范,其中一部分是公共的,能夠使該類正常運(yùn)轉(zhuǎn)并提供外部接口,它與接口的區(qū)別也就在與此;另一部分由虛函數(shù)組成,供子類繼承實(shí)現(xiàn)。這樣做的好處是只要實(shí)現(xiàn)自己需要的部分,就可以自動(dòng)運(yùn)轉(zhuǎn),沒有關(guān)聯(lián)。
簡(jiǎn)單的說,抽象類就是含有純虛函數(shù)的類,這是它的定義。
從功能上來講,抽象類定義了一個(gè)接口,即方法調(diào)用規(guī)約,派生類實(shí)現(xiàn)具體的規(guī)約。這實(shí)際上可以將具體的實(shí)現(xiàn)和接口分離開來,從而達(dá)到底層細(xì)節(jié)變化而高層框架不變的需求,通俗一點(diǎn)就是解耦。
abstract是抽象的意思,在java中,規(guī)定只能修飾類或者方法,所以不能修飾屬性。
(1)abstract修飾類,會(huì)使這個(gè)類成為一個(gè)抽象類,這個(gè)類將不能生成對(duì)象實(shí)例,但可以做為對(duì)象變量聲明的類型(見后面實(shí)例),也就是編譯時(shí)類型。抽象類就相當(dāng)于一類的半成品,需要子類繼承并覆蓋其中的抽象方法。
(2)abstract修飾方法,會(huì)使這個(gè)方法變成抽象方法,也就是只有聲明而沒有實(shí)現(xiàn),需要子類繼承實(shí)現(xiàn)(覆蓋)。
當(dāng)然有的,使用abstract進(jìn)行修飾,舉例如下:
public abstract class Hello {
public abstract String sayHello(String name); // 定義抽象方法
}