一、表象形態上:
- 抽象類可以給出一些方法的實現,接口卻不可以;
- 抽象類的抽象方法可以被子類部分實現,接口卻必須全部實現;
- 一個類只能繼承一個抽象類,但卻可以實現多個接口。
二、設計思想上:
- 類是對對象的抽象,抽象類是對類的抽象;接口是對方法(類中的部分方法)的抽象;
- 如果方法跨域不同類的對象,可以使用接口;對於一些相似的類對象,用繼承抽象類;
- 從設計角度上說,抽象類是從子類中發現了公共的東西,泛化出父類,然後子類繼承父類;而接口根本不知道子類的存在,方法如何實現還不確認,預先定義方法。
- 抽象類基本是自底向上抽象出來的,而接口是自頂向下設計出來的。
參考:《大話設計模式》