Java 抽象(abstract)
抽象
- 概念
- 抽象就是從多個事物中將共性的,本質的內容抽象出來
- 抽象類
- Java中可以定義沒有方法體的方法,方法的具體實現由子類完成,該方法稱爲抽象方法,包含抽象方法的類就是抽象類。
- 由來
- 多個對象具有相同的功能,但功能具體內容有所不同,那麼在抽取過程中,只抽取了功能定義,並未抽取功能主體,那麼只有功能定義,沒有功能主體的方法稱爲抽象方法。
抽象類特點
- 抽象方法一定在抽象類中。
- 抽象方法和抽象類必須被abstract修飾。
- 抽象類不能用new創建對象,因爲調用抽象方法沒有意義。
- 抽象類中的抽象方法要被使用,必須由子類重寫其所有的抽象方法後,創建子類對象調用;如果子類只覆蓋了部分抽象方法,那麼該子類還是一個抽象類。
- 抽象類中可以有抽象方法,也可以由非抽象方法。
- 如果一個類是抽象類,那麼繼承它的子類要麼是抽象類,要麼重寫所有的抽象方法。
抽象類的成員特點
成員變量:可以是變量,也可以是常量
構造方法:有構造方法
成員方法:可以是抽象方法,也可以是非抽象方法
抽象類注意事項
抽象類不能被實例化,爲什麼還要有構造函數?
只要是class定義的類裏面肯定有構造函數。抽象類中的構造函數是給子類實例化的。
一個類沒有抽象方法,爲什麼要定義爲抽象類?
(不想被繼承,還不想被實例化)
抽象類關鍵字不能和哪些關鍵字共存
final,如果方法被抽象,就需要被重寫,而final是不能被重寫的,所以衝突。
static,被static修飾的方法可以直接用類名調用,而調用抽象方法沒有意義。
private,被private修飾的方法被私有,子類無法重寫。