1. 程式人生 > >抽象和介面的區別(根據知乎大佬的討論整理)

抽象和介面的區別(根據知乎大佬的討論整理)

1、抽象類和介面都不能直接例項化。如果要例項化,涉及到多型。抽象類要例項化,抽象類定義的變數必須指向一個子類變數,這個子類繼承並實現了抽象類所有的抽象方法。介面要例項化,介面定義的變數必須指向一個子類變數,這個子類繼承並實現了介面所有的方法。

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

3、接口裡只能對方法進行宣告,抽象類裡既可以對方法進行宣告,又可以實現。

4、抽象類裡面的抽象方法必須被子類實現,如果子類不能全部實現,子類必須也是抽象類。接口裡面的方法必須被子類實現,如果子類不能全部實現,子類必須是抽象類。

5、接口裡面的方法不能有具體的實現,這說明介面是設計的結果,而抽象類是重構的結果。

6、抽象類裡面可以沒有抽象方法,如果一個類裡面有抽象方法,那麼這個類一定是抽象類。

7、抽象類中的抽象方法都要被實現,所以抽象方法不能是靜態的static,也不能是私有的private。

8、介面可以繼承介面,甚至可以繼承多個介面;類可以實現多個介面,只能繼承一個類。

9、抽象類主要用來抽象類別,介面主要用來抽象方法功能。關注事物的本質,用抽象類;關注一種操作,用介面。