NO.13 抽象類(lèi)與接口

抽象方法:是指由abstract修飾,只有方法的定義,沒(méi)有具體的實(shí)現(xiàn)(沒(méi)有{})。

抽象類(lèi):是指由abstract修飾,其中包含抽象方法的類(lèi)必須是抽象類(lèi)(不包含抽象方法的類(lèi)也可以聲明為抽象類(lèi))。

特點(diǎn):抽象類(lèi)不能被實(shí)例化,是需要被繼承的;子類(lèi)需要重寫(xiě)所有抽象方法,除非也聲明為抽象類(lèi)(不建議)。

意義:1)封裝所有子類(lèi)所共有的屬性和行為-------代碼復(fù)用

2)為所有子類(lèi)提供了統(tǒng)一的類(lèi)型-----------向上造型

3)可以包含抽象方法,為所有子類(lèi)提供了統(tǒng)一的入口;子類(lèi)的具體實(shí)現(xiàn)是不同的,但方法的定義是一致的


接口:是一個(gè)標(biāo)準(zhǔn)、規(guī)范,遵守該標(biāo)準(zhǔn)就能干某件事(API才理解),其是一種數(shù)據(jù)類(lèi)型,由interface定義,只能包含常量和抽象方法。

特點(diǎn):

1)接口不能被實(shí)例化

2)接口是需要被實(shí)現(xiàn)的,實(shí)現(xiàn)類(lèi),必須重寫(xiě)接口中的所有抽象方法

3)一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,用逗號(hào)分隔,若又繼承又實(shí)現(xiàn)時(shí),應(yīng)先繼承后實(shí)現(xiàn)

4)接口可以繼承接口



抽象類(lèi)和接口的區(qū)別:

1)一個(gè)類(lèi)只能繼承一個(gè)抽象類(lèi),但可以實(shí)現(xiàn)多個(gè)接口

2)抽象類(lèi)中可以包含抽象方法和非抽象方法,而接口中的所有方法均為抽象的。

3)子類(lèi)繼承抽象類(lèi)必須實(shí)現(xiàn)抽象類(lèi)中所有抽象方法,否則子類(lèi)也必須是抽象類(lèi)。而子類(lèi)實(shí)現(xiàn)接口則必須實(shí)現(xiàn)接口中的所有抽象方法。


下面完成求一組圖形中最大面積的案例:

圖形類(lèi)、繼承的正方形類(lèi)和圓形類(lèi)求面積方法


下面測(cè)試一下代碼:

主方法中創(chuàng)建圖形數(shù)組并分別創(chuàng)建對(duì)象,調(diào)用area方法比較面積

最后輸出結(jié)果為:

根據(jù)常識(shí),也判斷出程序沒(méi)問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 你很清楚的知道什么時(shí)候用抽象類(lèi),什么時(shí)候用接口么?p.s. 多文字預(yù)警! 1 抽象類(lèi)和接口簡(jiǎn)介 1.1 抽象類(lèi) ...
    Sharember閱讀 2,365評(píng)論 9 55
  • 一、抽象類(lèi) 1、抽象類(lèi)含義的概括: 當(dāng)多個(gè)類(lèi)出現(xiàn)相同功能時(shí),但功能主體不同,這樣可以向上抽取,抽取時(shí)只抽取功能定義...
    玉圣閱讀 840評(píng)論 0 6
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,739評(píng)論 18 399
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請(qǐng)注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,224評(píng)論 0 5
  • 在那六千四百米的深海 有只龐大的藍(lán)色精靈 它的心 是座孤獨(dú)的小小的城 藏有不可觸及的稀薄的星 它用五十二赫茲的歌唱...
    芊嵐閱讀 310評(píng)論 3 4