抽象方法:
1、從上面的例子中我們可以看到抽象方法跟普通方法是有區別的,它沒有自己的主體(沒有{}包起來的 業務邏輯),跟接口中的方法有點類似。所以我們沒法直接調用抽象方法
2、抽象方法不能用private修飾,因為抽象方法必須被子類實現(覆寫),而private權限對于子類來 說是不能訪問的,所以就會產生矛盾
3、抽象方法也不能用static修飾,試想一下,如果用static修飾了,那么我們可以直接通過類名調 用,而抽象方法壓根就沒有主體,沒有任何業務邏輯,這樣就毫無意義了。
?
抽象類:
1、用abstract關鍵字來表達的類,其表達形式為:(public)abstract class 類名{}
2、抽象類不能被實例化,也就是說我們沒法直接new 一個抽象類。抽象類本身就代表了一個類型,無法 確定為一個具體的對象,所以不能實例化就合乎情理了,只能有它的繼承類實例化。
3、抽象類雖然不能被實例化,但有自己的構造方法(這個后面再討論)
4、抽象類與接口(interface)有很大的不同之處,接口中不能有實例方法去實現業務邏輯,而抽象類 中可以有實例方法,并實現業務邏輯,比如我們可以在抽象類中創建和銷毀一個線程池。
5、抽象類不能使用final關鍵字修飾,因為final修飾的類是無法被繼承,而對于抽象類來說就是 需要通過繼承去實現抽象方法,這又會產生矛盾