1. 程式人生 > >介面和抽象類有什麼區別?

介面和抽象類有什麼區別?

介面和抽象類都是繼承樹的上層,他們的共同點如下:
1)都是上層的抽象層。
2)都不能被例項化
3)都能包含抽象的方法,這些抽象的方法用於描述類具備的功能。

區別如下:
1)在抽象類中可以寫非抽象的方法,從而避免在子類中重複書寫他們,這樣可以提高程式碼的複用性,這是抽象類的優勢;介面中只能有抽象的方法(jdk8以後也可以有實現方法)。
2)一個類只能繼承一個直接父類,這個父類可以是具體的類也可是抽象類;但是一個類可以實現多個介面。介面的設計具有更大的可擴充套件性,而抽象類的設計必須十分謹慎。
3)抽象級別(從高到低):介面>抽象類>實現類。
4)介面的設計目的,是對類的行為進行約束,側重於動作,而抽象類的設計目的,是程式碼複用。
5)抽象類是 is a關係;而介面是has a關係。