1、抽象類用abstract定義,抽象類不能被實例化,抽象類中可以包含方法的定義,也可以包含方法的實現;
接口用interface定義,接口不能被實例化,接口中只可以包含常量的定義和方法的定義。接口也是一種特殊的抽象類。
2、使用方式的不同
抽象類通過繼承方式(extends)使用,一個子類只能繼承一個抽象類,在子類中需要實現抽象類中的所有抽象方法;
接口通過實現方式(implements)使用,一個子類可以實現多個接口,在實現類中需要將接口中的所有方法實現(否則,要定義成抽象類)。
3、設計理念不同
抽象類表示“is a”的關係;接口表示“like a”的關係。
4、優先使用接口;多用組合,少用繼承。