1. 程式人生 > >java抽象類abstract和介面interface的區別

java抽象類abstract和介面interface的區別

                                     抽象類                               介面

定義關鍵字                   abstract                         interface 

子類繼承或實現關鍵字  extends                       implement

方法實現                     可以有                          不能有但是在jdk8以後可以有default實現

方法訪問控制符          無限制                        有限制預設是 public abstract 型別

屬性訪問控制符        無限制                               有限制 預設是 public static final 型別

靜態方法                 可以有                              不能有

static靜態程式碼塊   可以有                             不能有

本型別之間擴充套件      單繼承                          多繼承

 本型別之間擴充套件關鍵字 extends                   extends

抽象類在被繼承之間體現的是is-a的關係,介面與被實現之間體現的是can-do的關係

抽象類是模板設計  而介面更像契約式設計

介面是頂級“類” 編譯之後還是.class檔案

介面某種意義上位於頂層,而抽象類更多對各個介面進行組合,然後實現部分介面行為

介面和抽象類選擇猶豫時推薦定義介面,遵循介面隔離原則