Java中的接口與抽象類區別

共同點

  • 都不能被實例化,都在繼承樹的頂端,用於被其他類實現和繼承
  • 都可以包含抽象方法,實現他們的子類都必須重寫他們的全部抽象方法。

差異

  • 接口體現的是一種規範。抽象類體現的是一種模板式設計模式
  • 接口不能爲普通方法提供方法實現,只能提供抽象、靜態、默認、私有方法(Java9以後支持,Java9以前不支持)。抽象類完全可以爲普通方法提供方法實現
  • 接口不能定義普通成員變量,只能定義靜態常量。抽象類中兩者都可以
  • 接口不能包含構造器。抽象類可以包含構造器(用於給其他子類調用構造器來完成屬於抽象類的初始化操作,不是用於創建對象)
  • 接口不能包含初始化塊,抽象方法可以包含初始化塊
  • 一個類最多隻有一個直接父類(“注意我描述的是直接”)。一個類可以實現多個接口。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章