有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。比如乙個圖形類應該有乙個求周長的方法,但是不同的圖形求周長的演算法不一樣。那該怎麼辦呢?
分析事物時,發現了共性內容,就出現向上抽取。會有這樣一種特殊情況,就是方法功能宣告相同,但方法功能主體不同。那麼這時也可以抽取,但只抽取方法宣告,不抽取方法主體。那麼此方法就是乙個抽象方法。
描述j**aee工程師:行為:工作。
描述android工程師:行為:工作。
j**aee工程師和
android
工程師之間有共性,可以進行向上抽取。抽取它們的所屬共性型別:研發部員工。由於
j**aee
工程師和
android
工程師都具有工作功能,但是他們具體工作內容卻不一樣。這時在描述研發部員工時,發現了有些功能(工作)不具體,這些不具體的功能,需要在類中標識出來,通過
j**a
中的關鍵字
abstract(抽象)
。當定義了抽象函式的類也必須被abstract關鍵字修飾,被
abstract
關鍵字修飾的類是抽象類。
二、
抽象類&抽象方法的定義
抽象方法定義的格式:
1public
abstract 返回值型別 方法名(引數);
抽象類定義的格式:
1public
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,...