1. 程式人生 > >介面,抽象方法的作用--隨筆

介面,抽象方法的作用--隨筆

    abstract 關鍵字允許人們在類中建立一個或者多個沒有任何定義的方法----提供了介面部分,但是沒有提供任何相應的具體實現,這些實現是由此類的繼承者建立的。也就是說abstract類只是對外提供一個介面,這個介面通常在基類中建立,用於通過多型去搞事情(也就是向上轉型)。因為匯出類有而基類沒有的方法,基類是沒法訪問匯出類中的這個方法的。

     一個類只能繼承一個類,向上轉型的時候只能轉成一個基類。因此我們就出現了介面,一個類可以是實現多個介面。當我們把一個類和就扣組合在一起的時候,這個類必須放在前面,後面跟著的才是介面(否則編譯器會報錯)。一定要記住使用介面的核心原因,一為了能夠向上轉型為多個基型別(以及由此而帶來的靈活性)。然而使用介面的第二個原因確實與使用抽象基類相同:防止客戶端程式設計師建立該類的物件,並確保這僅僅是建立一個介面。

     那麼就帶來一個問題,我們應該使用介面還是抽象類呢?

     如果要建立不帶任何方法定義和成員變數的基類,那麼就應該選擇介面而不是抽象類。事實上,如果知道某事物應該成為一個基類,那麼第一選擇應該是使它成為一個介面。

    介面擴充套件的時候可以使用多繼承(僅適用於介面的繼承)。一般情況下,只可以將extends用於單一的類,但是可以引用多個基類介面。就像底下的例子,只需要用逗號將介面名一一分割開就行。

interface m{  void a(); }

interface z{  void b(); }

interface y{  void c(); }

interface g extends m,z,y{  void d(); }

class i implements g {

public void a(){};

public void b(){};

public void c(){};

public void d(){};

}