前言
想到繼承與實現,就一定會聯想到抽象類與接口,本文就以抽象類與接口為入口進行簡單概括,同時對繼承與實現進行擴展小結。
普通類與抽象類
1. 抽象類存在的意義
為了復用該類的方法,即多態的實現,(一脈相承,照單全收)
2. 區別
相較於普通類多了一個抽象方法,(不可被static,final修飾)修飾權限只能為(public或protected)
由於不能new抽象類,所以構造方法只能提供子類調用
3. 優勢
可強制性規范寫法,明確需要覆蓋的方法
4. 擴展
為什么是單繼承多實現?
舉個例子:
A有方法eat(),B和C繼承並重寫了A的eat()
假如,此時D多繼承了B和C,就會導致eat()方法同名
然而,實現則是每次都會對方法重寫(確保都在B,C層級上),即使B,C接口都有eat()方法,也只重寫一個
繼承用法
繼承可用在對原有類的擴展上,比如一張數據表定義完后,后期需要對該表功能進行擴充,即可使用繼承來添加新的字段。
抽象類與接口
1. 接口存在的意義
增強代碼的擴展性,取其精華去其糟粕(東拼西湊)
2. 區別
抽象類的再抽象
由(public static)常量和(public abstract)抽象方法組成
JDK1.8后可以定義默認的實現方法
沒有構造方法(類與接口的區別,單繼承與多實現的區別)
3. 優勢
精確擴展功能,不會把不需要的方法或變量也繼承下來
4. 擴展
需要新功能時,只需要新添加一個接口,實現該接口即可