Java——面向對象進階
阿新 • • 發佈:2018-02-04
面向 oid dev pre 功能 direction pri 面向對象 必須
抽象類
抽象類:說不清楚的類
抽象方法:說不清楚的方法
方法功能聲明相同,但方法功能主體不同。那麽這時也可以抽取,但只抽取方法聲明,不抽取方法主體。那麽此方法就是一個抽象方法。
定義格式:
當定義了抽象函數的類也必須被abstract關鍵字修飾,被abstract關鍵字修飾的類是抽象類。
/* * 抽象類,不能實例化對象, 不能new的 * 不能創建對象的原因: 如果真的讓你new了, 對象.調用抽象方法,抽象方法沒有主體,根本就不能運行 * 繼承他的子類必須要重寫定義的抽象方法 */ public abstract class Develop { //抽象類 public abstract void work(); //抽象方法 }
特點:
1、抽象類和抽象方法都需要被abstract修飾。抽象方法一定要定義在抽象類中。
2、抽象類不可以直接創建對象,原因:調用抽象方法沒有意義。
3、只有覆蓋了抽象類中所有的抽象方法後,其子類才可以創建對象。否則該子類還是一個抽象類。
之所以繼承抽象類,更多的是在思想,是面對共性類型操作會更簡單。
疑問:
1、抽象類一定是個父類?
是的,因為不斷抽取而來的。
2、抽象類中是否可以沒有抽象方法?如果可以,那麽,該類還定義成抽象類有意義嗎?為什麽?
可以沒有抽象方法,有意義,不會讓其他人直接創建該類對象
3、抽象關鍵字abstract不可以和哪些關鍵字共存?
- 1、private:私有的方法子類是無法繼承到的,也不存在覆蓋,而abstract和private一起使用修飾方法,abstract既要子類去實現這個方法,而private修飾子類根本無法得到父類這個方法。互相矛盾。
- 2、final,
- 3、static,
Java——面向對象進階