1. 程式人生 > >Java——面向對象進階

Java——面向對象進階

面向 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不可以和哪些關鍵字共存?

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

Java——面向對象進階