返回列表 發帖

抽象類別 VS 介面

本帖最後由 周政輝 於 2018-3-24 10:13 編輯

概述
抽象類別 (Abstract Class)



  • 使用 abstract 定義抽象類別 (不得宣告為 final class)
  • 無法實體化的類別 (即無法透過 new 關鍵字產生實體)
  • 或許會看到如下這種程式碼
  • 專門被拿來當作父類別的類別,具有範本作用
  • 只能被繼承 (使用 extends 關鍵字),子類別需實作抽象方法 (否則繼續抽象下去)
  • 其抽象方法 (abstract method)封裝等級不能是 private (即必須是 public/protected/(default))
  • abstract 回傳值型別 抽象方法名稱(參數列); // 沒有方法實體,以 ; 做結尾
  • 包含抽象方法的類別,一定要宣告為抽象類別;但是抽象類別不一定有抽象方法


介面 (Interface)

  • 定義屬性成員皆為常數 (即預設 public static final),因此必須給定初始值
  • 定義方法時,只能為抽象方法 (即預設 public abstract,定義功能的名稱,實作部分留給相關類別 override
  • 不一定需要定義方法,即空介面 (ex: java.io.Serializable)
  • 只能被實作 (使用 implements 關鍵字),子類別需實作抽象方法 (否則需宣告為抽象類別)
  • 子類別實作抽象方法修飾字必須是 public (抽象方法預設使用 public 修飾)

附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

返回列表