運維和開發知識,Java中的抽象類和介面的兩大區別!
抽象類和介面有什麼區別?什麼情況下使用抽象類?什麼情況下使用介面?
抽象類和介面的不同:
1.抽象函式為帶有abstract關鍵字修飾的方法,抽象類是包含有抽象函式或使用abstract class來定義的類。
抽象類主要是用來抽象一組子類的共有屬性和方法,抽象類不能被例項化,抽象類只能作為父類被子類繼承,抽象類用來作為子類的模板。
2.介面是抽象方法的集合,介面通常以interface來宣告。
類實現介面,從而繼承介面中的抽象方法,實現一個介面的時候,需要實現介面中的所有方法。
設計層面區別:
抽象類可以定義公用方法,如果抽象類類增加一個方法,那麼子類會自動具備對應的功能;而介面中增加一個方法定義,那麼所有的實現類需要去分別定義自己的實現。
抽象類強調的是方法和屬性,抽象提取出共有的方法和屬性,對應的是is a的概念,子類是哪一種類;介面強調的是行為,突出實現介面的類有什麼功能,對應的 has a的概念。
介面用來實現C++中的多繼承,實現解耦和程式碼複用。
什麼時候使用抽象類和介面?
當有很多方法並且想要其中一部分方法有預設的實現,這個時候用抽象類。Java中不支援多繼承,類只能繼承一個父類,但是類可以實現多個介面,要實現多繼承的情況下需要使用介面。如果基礎契約不斷變化,那麼應該使用抽象類。因為如果您的基礎契約一直在變化,並且您仍然使用介面,那麼每次契約變化時,您必須更改實現該介面的所有類。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2644670/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java中抽象類和介面的區別Java抽象
- Java中抽象類和介面的介紹及二者間的區別Java抽象
- Java中抽象類與介面的區別Java抽象
- 【Java基本功】聊聊抽象類和介面的區別Java抽象
- java-介面和抽象類的聯絡和區別。Java抽象
- 介面和抽象類的區別抽象
- Java 8 中的抽象類和介面到底有啥區別?Java抽象
- Java:面試題:抽象類與介面的區別Java面試題抽象
- java基礎總結(面試高頻問題)十:java抽象類和介面的區別Java面試抽象
- java中抽象類和介面Java抽象
- 計算機buffer和cache的區別?linux運維學習知識計算機Linux運維
- 介面的行為抽象和抽象類的行為抽象抽象
- Java 介面和抽象類是什麼,有什麼區別Java抽象
- [轉載] 整理下java中stringBuilder和stringBuffer兩個類的區別JavaUI
- LCD1602和12864中8080和6800介面的區別
- java中Scanner類nextLine()和next()的區別和使Java
- Java開發和Android開發的區別JavaAndroid
- JavaSE基礎知識學習—–抽象類和介面Java抽象
- 【Java面試題-基礎知識02】Java抽象類和介面六連問?Java面試題抽象
- Java中異常分類和Throw和Throws的區別Java
- 關於抽象類和介面的初步理解抽象
- Java常見知識點彙總(⑫)——==和equals的區別Java
- 全面的MySQL基礎運維知識點(二)MySql運維
- 全面的MySQL基礎運維知識點(一)MySql運維
- 全面的MySQL基礎運維知識點(三)MySql運維
- java 中equals和==的區別Java
- 一文打盡Java抽象類和介面的相關問題Java抽象
- Java抽象類和介面 小白版Java抽象
- Java之繼承和抽象類Java繼承抽象
- Java基礎-抽象類和介面Java抽象
- 【知識點】 gcc和g++的聯絡和區別GC
- Java類和物件知識點總結Java物件
- 抽象方法和抽象類抽象
- java介面和抽象類的簡單理解Java抽象
- java中==和equlas區別Java
- Android 開發中 getContext 和 getActivity的區別AndroidContext
- Java中 equals() 方法和 == 的區別Java
- Java中Vector和ArrayList的區別Java