11. java 抽象類

概念

在面向對象的概念中,全部的對象都是經過類來描繪的,可是反過來,並非全部的類都是用來描繪對象的,若是一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。函數

在Java中經過abstract關鍵字定義抽象類,以下:code

[訪問修飾符] abstract class 類名{
    ....
}

抽象類除了不能實例化對象以外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類同樣。對象

因爲抽象類不能實例化對象,因此抽象類必須被繼承,才能被使用。抽象類不能使用final修飾。繼承

抽象方法

只包含一個方法名,而沒有方法體,同時使用abstract關鍵字修飾的方法編譯

abstract class 類名{
    ....
   public abstract 返回值 函數名(參數列表);
}

抽象方法必須爲public或者protected(由於若是爲private,則不能被子類繼承,子類便沒法實現該方法),缺省狀況下默認爲public。class

聲明抽象方法會形成如下兩個結果:變量

  • 若是一個類包含抽象方法,那麼該類必須是抽象類。
  • 任何子類必須重寫父類全部的抽象方法,或者聲明自身爲抽象類。

抽象類總結

  1. 抽象類不能被實例化(初學者很容易犯的錯),若是被實例化,就會報錯,編譯沒法經過。只有抽象類的非抽象子類能夠建立對象。
  2. 抽象類中不必定包含抽象方法,可是有抽象方法的類一定是抽象類。
  3. 抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現也就是方法的具體功能。
  4. 抽象類的構造方法,類方法(用 static 修飾的方法)不能聲明爲抽象方法。
  5. 抽象類的子類必須重寫抽象類中的全部抽象方法,除非該子類也是抽象類。
  6. 外部抽象類不能使用static修飾,而內部的抽象類容許使用static修飾,使用static修飾的內部類至關於一個外部抽象類,子類繼承的時候使用「外部類.內部類」的形式。
相關文章
相關標籤/搜索