天天看點

對Java中抽象類和接口的了解

抽象類( abstract class)

一、定義

抽象類定義了一些具體事物的共同特征集合,是一個抽象概念。比如一些具體的圖形:圓形、三角形、長方形,它們都屬于圖形。圖形類就是這些具體圖形的父類(抽象的),這些具體圖形就是圖形類的派生類。

二、程式設計層面

1.抽象類可以定義資料成員、抽象方法(abstract f())、非抽象方法。子類繼承抽象父類,必須實作所有的抽象方法,否則子類也要用abstract修飾。

2.一個類具有一個或多個抽象方法,這個類必須用abstract修飾。

3.抽象方法:隻有方法聲明(修飾符,參數類型、個數,傳回值),沒有方法體BODY。

4.抽象類無法執行個體化,因為它是抽象的概念,無實體内容。

5.抽象類的資料成員是friendly的,子類可調用,修改父類資料成員。

接口(Interface)

一、定義

接口定義一個特定的功能(規範),一個類可以通過實作一個接口來完成特定的功能(規範)。

二、程式設計層面

1.接口中定義的資料成員必須是靜态的不可修改的(用static\final修飾)。

2.接口中的方法隻有方法聲明,無方法體BODY。

3.實作接口的類必須實作接口中的所有方法,否則會報錯。

4.接口不能執行個體化,但允許接口變量,實作接口的類可以向上轉型為接口類型。

5.接口中的方法預設用public、abstract修飾。

總結:抽象類和接口概念展現了實作面向對象程式設計的一個核心原則OCP(Open-Closed-Principle)開閉原則。