抽象類是一種模板模式御雕。抽象類為所有子類提供一個(gè)通用的模板膏燃,子類可以在這個(gè)通用的模板上進(jìn)行擴(kuò)展灌具。
簡單來說青团,就是繼承的子類必須實(shí)現(xiàn)父類的屬性和方法譬巫。抽象方法必須被子類實(shí)現(xiàn)。
如下圖所例
抽象類可以包含屬性督笆,方法芦昔,構(gòu)造方法。但是構(gòu)造方法不能被用來new實(shí)例娃肿,只能用來被子類調(diào)用咕缎。
一般來說,抽象類限制比一般類大料扰,一般類比抽象類更加靈活凭豪。當(dāng)是在現(xiàn)實(shí)中很多父類中的方法是沒有必要的,因?yàn)楦鱾€(gè)子類中的方法和父類必定不同记罚,所以沒有必要在父類里進(jìn)行定義墅诡。
比如我們初中學(xué)習(xí)科學(xué),到了高中科學(xué)被分為物理桐智、化學(xué)末早、生物。我們不需要再去統(tǒng)一了解怎么學(xué)習(xí)科學(xué)這門知識说庭,我們只需要知道物理然磷、生物、化學(xué)每一門是怎么學(xué)的刊驴,而且每門的學(xué)習(xí)方法是我們必須要知道的姿搜,如同父類的抽象方法在子類中必須被實(shí)現(xiàn)。
當(dāng)然捆憎,在這個(gè)例子中使用抽象類不是必須的舅柜,如果有人就是想知道科學(xué)的學(xué)習(xí)方法呢。我們在父類中加入這樣一部分屬性和方法也未嘗不可躲惰。這時(shí)候我們可以用另一個(gè)例子致份,比如我們創(chuàng)建一個(gè)天氣類,天氣分為晴础拨,雨氮块,多云,臺風(fēng)诡宗,降雪等等滔蝉,每個(gè)天氣所造成的影響都不同。但我們怎么定義天氣這個(gè)父類本身所造成的影響呢塔沃?太寬泛了蝠引,可能我們要去寫幾十上百條代碼,最后的結(jié)果可能也并未有什么不同。但我們會(huì)很關(guān)心各種天氣所帶來的影響立肘,如果一個(gè)地方的天氣預(yù)報(bào)連這點(diǎn)實(shí)質(zhì)性的東西都沒有边坤,那這個(gè)天氣預(yù)報(bào)也不會(huì)有人看了。
另外谅年,如果子類沒有實(shí)現(xiàn)父類的抽象方法茧痒,則必須將子類也定義為為abstract類。