2017年8月12日 星期六

Chapter 09: 介面

抽象類別與抽象函式
  • 為了建立讓子型別都可用的共同介面,可以讓base class成為一個abstract class
  • 只有宣告而無本體的method稱為abstract method。(相當於C++的pure virtual function)
abstract void f();
  • 含有一個或多個abstract method的class需以關鍵字abstract做為此class的飾詞。
  • 不能產生abstract class的物件,因為他只是用來表示介面。
  • 繼承abstract class的話必須實做所有abstract method才能產生物件,若沒有實作所有abstract method,此class仍然要加abstract做為abstract class。
  • 若只是單純不希望某個class被產生出物件,也可以將沒有abstract method的class變為abstract class。

介面
  • interface可以想像成是"純粹"的abstract class。
  • interface內的data member都預設為public final static。
  • interface內的method都只能是宣告,而且預設為public。
  • 可以透過繼承來擴充interface,但繼承它的也要是一個interface。
  • 只有對interface允許extends後面接一個以上的interface。

interface vs. abstract class
  • interface的好處
    • 能被向上轉型到多個base class (多重繼承時)
    • 和abstract class一樣使其無法產生物件
  • 若不帶任何函式定義及成員變數,應該優先選擇使用interface

沒有留言:

張貼留言