接口和抽象類

抽象類和接口的區別:

  1. 抽象類是用來捕捉子類的通用特性的 。它不能被實例化,只能被用作子類的超類。抽象類是被用來創建繼承層級裏子類的模板。

接口是抽象方法的集合。如果一個類實現了某個接口,那麼它就繼承了這個接口的抽象方法。這就像契約模式,如果實現了這個接口,那麼就必須確保使用這些方法。接口只是一種形式,接口自身不能做任何事情。

  1. 抽象類和接口的對比
  2. 什麼時候使用抽象類和接口

如果你擁有一些方法並且想讓它們中的一些有默認實現,那麼使用抽象類。
如果你想實現多重繼承,那麼你必須使用接口。由於Java不支持多繼承,子類不能夠繼承多個類,但可以實現多個接口。因此你就可以使用接口來解決它。
如果基本功能在不斷改變,那麼就需要使用抽象類。如果不斷改變基本功能並且使用接口,那麼就需要改變所有實現了該接口的類。

注: 1 接口是核心,其定義了要做的事情,包含了許多的方法,但沒有定義這些方法應該如何做。 2 如果一些類的實現有共通之處,則可以抽象出來一個抽象類,讓抽象類實現接口的公用的代碼,而那些個性化的方法則由各個子類去實現