JAVA中,抽象類和接口的對比

抽象類是用來捕捉子類的通用特性的。接口是抽象方法的集合。

從設計層面來說,抽象類是對類的抽象,是一種模板設計,接口是行為的抽象,是一種行為的規範。

相同點

  • 接口和抽象類都不能實例化
  • 都位於繼承的頂端,用於被其他實現或繼承
  • 都包含抽象方法,其子類都必須覆寫這些抽象方法

不同點


JAVA中,抽象類和接口的對比

備註:Java8中接口中引入默認方法和靜態方法,以此來減少抽象類和接口之間的差異。

現在,我們可以為接口提供默認實現的方法了,並且不用強制子類來實現它。

接口和抽象類各有優缺點,在接口和抽象類的選擇上,必須遵守這樣一個原則:

行為模型應該總是通過接口而不是抽象類定義,所以通常是優先選用接口,儘量少用抽象類。

選擇抽象類的時候通常是如下情況:需要定義子類的行為,又要為子類提供通用的功能。


分享到:


相關文章: