国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

黑馬程序員——抽象類和接口

2019-11-14 23:08:57
字體:
來源:轉載
供稿:網友
黑馬程序員——抽象類和接口

------java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------

最近在學習畢向東老師的的Java SE視頻教程,此為背景。

  本篇內容主要講抽象類和接口的簡單概念。

抽象類abstract class

  用關鍵字abstract修飾的類叫做抽象類,抽象類不能被實例化,即不能new出來一個抽象類的對象(實例)。

抽象方法

  用abstract關鍵字所修飾的方法叫做抽象方法

  抽象方法必須定義在抽象類中。

  抽象方法有聲明,無實現(沒有花括號{},有花括號但是內容為空也是一種實現,空實現)。

  相對應的有聲明有實現的方法可以叫做具體方法

抽象類和抽象方法的關系

  抽象方法必須定義在抽象類里面。

  如果一個類包含了抽象方法,那么這個類一定要聲明成抽象類。

  如果某個類是抽象類,那么這個類既可以包含抽象方法,也可以包含具體的方法(有聲明,有實現)。

  抽象類中如果全是具體方法也是允許的;抽象類也可以是空的,即什么也不包含。

抽象類的繼承

  在父類是一個抽象類的情況下,子類繼承父類時,有兩種選擇:

  1.子類是抽象類

  那么子類在聲明時仍然需要abstract關鍵字,子類可以選擇實現或者不實現父類的抽象方法,(因為抽象類中也可以包括具體方法,甚至可以全是具體方法)。

  但是無論怎樣,因為子類還是一個抽象類,所以不能實例化。

  2.子類不是抽象類

  子類不是抽象類時可實例化,但是這時候子類必須實現父類所有的抽象方法。

  實現抽象方法的時候不必再使用abstract關鍵字。

抽象類的用途

  抽象類的抽象方法定義一個規范,或者叫做約定,具體實現交給子類來做。

  因為抽象類的實現可能無法完成或者沒有意義。

  舉個例子:

  定義一個抽象類Shape,然后Triangle,Circle和Rectangle等繼承Shape,Shape中定義一個抽象方法計算面積,然后各個子類中實現這個方法,計算各自的面積。

  這時候如果不用抽象類和抽象方法,即Shape類是一個普通的類,也可以完成這樣的功能,即通過用子類方法覆蓋父類方法的方式。

  但是此時父類,即Shape中的方法就要提供具體的實現,首先不知道怎么計算這個抽象的形狀的面積,如果父類面積定義一個常數,如0或1,又顯得意義不明晰。

接口

  接口用關鍵字interface聲明。

  接口的地位等同于class,接口中的所有方法都是抽象方法。

  接口中在定義方法的時候,可以使用abstract關鍵字,也可以省略abstract關鍵字,(大多數時候都是省略的),方法仍是抽象的,不能有實現的花括號。

  接口和抽象類的功能類似,接口也不能實例化,可以將接口看作是一種特殊的抽象類(全是抽象方法)。

  接口的多態用法和抽象類也類似,接口類型的引用可以指向實現了這個接口的類的對象。

  接口和抽象類的區別如下:

  接口中的方法必須全是抽象方法;而抽象類中的方法,可以有抽象的,也可以有具體的方法。

  類可以實現接口,用關鍵字implements。Java是單繼承的,但是卻可以實現多個接口。(一個類可以同時繼承另一個類,并且實現多個接口。)

  如果一個類實現了一個接口,并且這個類不是抽象類,那么這個類必須實現這個接口中的所有方法。如果是抽象類,則無需實現接口中的所有方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌宁县| 微山县| 六枝特区| 九龙县| 漳州市| 南阳市| 师宗县| 静宁县| 广饶县| 滦平县| 开封县| 仁怀市| 遵义市| 广西| 浦县| 河南省| 阿图什市| 大埔区| 竹北市| 苍溪县| 苍南县| 临邑县| 通州区| 霍林郭勒市| 河东区| 铜陵市| 双峰县| 儋州市| 封开县| 莎车县| 故城县| 西乌| 莆田市| 乌什县| 延边| 客服| 错那县| 连城县| 武清区| 鹤峰县| 南靖县|