1. 程式人生 > >一、基礎篇--1.1Java基礎-抽象類和介面的區別

一、基礎篇--1.1Java基礎-抽象類和介面的區別

抽象類和介面的區別

抽象類和介面在設計層面的區別主要體現在:介面是對動作的抽象,抽象類是對根源、類的抽象。抽象類表示的是,這個物件是什麼,介面表示的是,這個物件可以做什麼。

比如,男人、女人是人,人是男人女人的抽象類。人可以吃東西,動物也可以吃東西,人還有各種行為,吃東西就可以定義為一種介面。

語法上具體的異同如下:

1、不管是抽象類還是介面都不能例項化。

2、抽象類要被子類繼承,介面要被類實現。

3、抽象類中可以有具體的方法實現,介面中只能做方法說明。

4、接口裡定義的變數只能是公共的靜態的常量,抽象類中的變數是普通變數。

5、抽象類裡的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那麼該子類只能是抽象類。同樣,一個實現介面的時候,如不能全部實現介面方法,那麼該類也只能為抽象類。

6、抽象類裡可以沒有抽象方法(沒有抽象方法就沒必要定義為抽象類,只是語法上可以這麼寫,非常不建議)

7、抽象方法要被實現,所以不能是靜態的,也不能是私有的,final的。

8、介面可以繼承介面,並且可以繼承多個介面,但是類只能繼承一個介面。

9、類只能單繼承,可以實現多個介面。

10、介面預設許可權是public,必須是public。