抽象類的作用相當於模板
其內部可以有抽象方法和非抽象方法:
其中抽象方法必須被繼承該抽象類的子類重寫;
而非抽象方法則不需要。
那麼,非抽象方法的目的是什麼呢?
重複利用。
當多個子類繼承同一個抽象類的時候,有些共同的屬性,不需要子類特別實現的可以定義爲同一個非抽象方法,使用的時候子類直接調用即可。
比如抽象父類內部有個單例的非靜態的非抽象方法c,有A,B兩個子類都繼承該類,則A和B在調用c方法的時候,是同一個對象嗎?
測試發現不是,也就是系統在生成的時候,實現了A.c和B.c兩個方法。
那麼,c方法的目的是什麼?不需要重複實現,僅在父類實現一次就可以循環利用。
如果是靜態statc的c方法,則使用的是同一個,因爲static的本質是在jvm的虛擬機內單獨建立一塊區域統一存放,實現上只會有一個實例。