物件導向 抽象類

2022-09-17 20:57:19 字數 1687 閱讀 2208

有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。比如乙個圖形類應該有乙個求周長的方法,但是不同的圖形求周長的演算法不一樣。那該怎麼辦呢?

分析事物時,發現了共性內容,就出現向上抽取。會有這樣一種特殊情況,就是方法功能宣告相同,但方法功能主體不同。那麼這時也可以抽取,但只抽取方法宣告,不抽取方法主體。那麼此方法就是乙個抽象方法。

描述j**aee工程師:行為:工作。

描述android工程師:行為:工作。

j**aee工程師和

android

工程師之間有共性,可以進行向上抽取。抽取它們的所屬共性型別:研發部員工。由於

j**aee

工程師和

android

工程師都具有工作功能,但是他們具體工作內容卻不一樣。這時在描述研發部員工時,發現了有些功能(工作)不具體,這些不具體的功能,需要在類中標識出來,通過

j**a

中的關鍵字

abstract(抽象)

。當定義了抽象函式的類也必須被abstract關鍵字修飾,被

abstract

關鍵字修飾的類是抽象類。

二、

抽象類&抽象方法的定義

抽象方法定義的格式:

1

public

abstract 返回值型別 方法名(引數);

抽象類定義的格式:

1

public

abstract

class

類名

看如下**:

1

//研發部員工

2public

abstract

class

developer 5//

j**aee工程師

6public

class j**aee extends

developer10}

11//

android工程師

12public

class android extends

developer

16 }

三、抽象類的特點

1、抽象類和抽象方法都需要被

abstract

修飾。抽象方法一定要定義在抽象類中。

2、抽象類不可以直接建立物件,原因:呼叫抽象方法沒有意義。

3、只有覆蓋了抽象類中所有的抽象方法後,其子類才可以建立物件。否則該子類還是乙個抽象類。

4、之所以繼承抽象類,更多的是在思想,是面對共性型別操作會更簡單。

四、抽象類的細節問題

1、抽象類一定是個父類?

是的,因為不斷抽取而來的。

2、抽象類中是否可以不定義抽象方法。

是可以的,那這個抽象類的存在到底有什麼意義呢?不讓該類建立物件,方法可以直接讓子類去使用

3、抽象關鍵字

abstract

不可以和哪些關鍵字共存?

(1)、private:私有的方法子類是無法繼承到的,也不存在覆蓋,而abstract和private一起使用修飾方法,abstract既要子類去實現這個方法,而private修飾子類根本無法得到父類這個方法。互相矛盾。

(2)、final,暫時不關注,後面學

(3)、static,暫時不關注,後面學

物件導向 抽象類

抽象 裡邊有未明確的東西。抽象類的特點 1 抽象方法一定在抽象類中。2 抽象方法和抽象類都必須被abstract關鍵字修飾。3 抽象類不可以用new建立物件,因為呼叫抽象方法沒意義。4 抽象類中的抽象方法要被使用,必須由子類複寫其所有的抽象方法後,建立子類物件呼叫。如果子類只覆蓋部分抽象方法,那麼該...

物件導向 抽象類

抽象類概述 什麼是抽象類?什麼是抽象方法?抽象方法 沒有方法體的方法就是抽象方法,必須用abstract關鍵字去修飾。抽象類 擁有抽象方法的類,就是抽象類。應用場景 在不同的子類往上抽取方法時,方法的定義是一樣的,但是方法體不一樣,所以抽取到父類時就可以使用抽象方法。簡單來說 當多個子類擁有同乙個功...

物件導向 抽象類

帶引數的抽象類以及抽象方法 編寫構造方法以及預設的構造方法,備註 未自行編寫構造方法時具有預設的構造方法 一旦自行編寫了構造方法,預設不寫的構造方法,必須編寫 package 測試類 public class cs 具有三個引數的構造方法 public cs string name,int zhi,...