運維和開發知識,Java中的抽象類和介面的兩大區別!

陝西優就業發表於2019-05-16

抽象類和介面有什麼區別?什麼情況下使用抽象類?什麼情況下使用介面?

抽象類和介面的不同:

1.抽象函式為帶有abstract關鍵字修飾的方法,抽象類是包含有抽象函式或使用abstract class來定義的類。

抽象類主要是用來抽象一組子類的共有屬性和方法,抽象類不能被例項化,抽象類只能作為父類被子類繼承,抽象類用來作為子類的模板。

2.介面是抽象方法的集合,介面通常以interface來宣告。

類實現介面,從而繼承介面中的抽象方法,實現一個介面的時候,需要實現介面中的所有方法。

設計層面區別:

抽象類可以定義公用方法,如果抽象類類增加一個方法,那麼子類會自動具備對應的功能;而介面中增加一個方法定義,那麼所有的實現類需要去分別定義自己的實現。

抽象類強調的是方法和屬性,抽象提取出共有的方法和屬性,對應的是is a的概念,子類是哪一種類;介面強調的是行為,突出實現介面的類有什麼功能,對應的 has a的概念。

介面用來實現C++中的多繼承,實現解耦和程式碼複用。

什麼時候使用抽象類和介面?

當有很多方法並且想要其中一部分方法有預設的實現,這個時候用抽象類。Java中不支援多繼承,類只能繼承一個父類,但是類可以實現多個介面,要實現多繼承的情況下需要使用介面。如果基礎契約不斷變化,那麼應該使用抽象類。因為如果您的基礎契約一直在變化,並且您仍然使用介面,那麼每次契約變化時,您必須更改實現該介面的所有類。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2644670/,如需轉載,請註明出處,否則將追究法律責任。

相關文章