抽象方法和抽象類

杭州小哥哥發表於2020-11-06

抽象方法:

1、從上面的例子中我們可以看到抽象方法跟普通方法是有區別的,它沒有自己的主體(沒有{}包起來的 業務邏輯),跟介面中的方法有點類似。所以我們沒法直接呼叫抽象方法

2、抽象方法不能用private修飾,因為抽象方法必須被子類實現(覆寫),而private許可權對於子類來 說是不能訪問的,所以就會產生矛盾

3、抽象方法也不能用static修飾,試想一下,如果用static修飾了,那麼我們可以直接通過類名調 用,而抽象方法壓根就沒有主體,沒有任何業務邏輯,這樣就毫無意義了。

 

抽象類:

1、用abstract關鍵字來表達的類,其表達形式為:(public)abstract class 類名{}

2、抽象類不能被例項化,也就是說我們沒法直接new 一個抽象類。抽象類本身就代表了一個型別,無法 確定為一個具體的物件,所以不能例項化就合乎情理了,只能有它的繼承類例項化。

3、抽象類雖然不能被例項化,但有自己的構造方法(這個後面再討論)

4、抽象類與介面(interface)有很大的不同之處,介面中不能有例項方法去實現業務邏輯,而抽象類 中可以有例項方法,並實現業務邏輯,比如我們可以在抽象類中建立和銷燬一個執行緒池。

5、抽象類不能使用final關鍵字修飾,因為final修飾的類是無法被繼承,而對於抽象類來說就是 需要通過繼承去實現抽象方法,這又會產生矛盾

相關文章