Java 抽象類和接口的區別

接口和抽象類的對比

面試問道了接口和抽象類。這個超級簡單的問題竟然答錯了,最後整理一遍,一邊夯實自己的記憶。

首先要明白 抽象類時 abstract 接口時interface。所謂的接口,並不是開發過程中A項目組和B項目組對接的接口。abstract 是用來修飾class的,interface 和class 是兩種類型。

在組成上,
       抽象類中可以有默認防範,也可以有抽象方法。並且抽象類中的方法可以全部是抽象方法,也可以全部都有默認方法。抽象方法在使用中可以繼承別的類,也可以實現別的接口, !!!重點!!! 抽象類可以extend別的類的同時也實現別的接口。和正常類一樣。

       接口中必須全部是抽象方法,不能有方法體,就是這麼乾脆利落。接口可以實現接口??省省吧,接口可以繼承不能實現,因爲接口沒有方法體,但是接口可以繼承接口,這樣實現這個接口的類需要是實現多個兩個接口的方法了。

附一個接口和抽象類的對比圖:

引用自:http://www.importnew.com/12399.html

這位博主說的接口的多繼承有點問題,自己試了一下,接口時不能繼承類的,正如上文所說,接口中沒有實體方法。

 

在使用方面

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

上面這位博主寫的不錯,引用了。

 

附:

接口時可以定義變量的,親測。但至少是default級別的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章