當前位置:編程學習大全網 - 編程語言 - 抽象類和接口的相同點與不同點

抽象類和接口的相同點與不同點

壹、兩者相同點

1、不能直接實例化,如果要實例化,抽象類變量必須指向實現所有抽象方法的子類對象,接口變量必須指向實現所有接口方法的類對象。

2、抽象類裏的抽象方法必須全部被子類所實現,子類不能全部實現父類抽象方法,那麽該子類還只能是抽象類。壹個類實現接口的時候,如不能全部實現接口方法,那麽該類也只能為抽象類。

二、兩者不同點?

1、默認的方法實現

抽象類可以有默認的方法實現;接口,Java8規定可以為接口提供默認實現的方法並且不用強。

2、實現

制子類來重寫子類使用extends關鍵字來繼承抽象類。如果子類不是抽象類的話,它需要重寫抽象類中的抽象方法;接口子類使用關鍵字implements 來實現接口,它需要重寫接口中沒有默認。?

3、構造器

抽象類可以有構造器,接口不能有構造器。

4、與正常Java類的區別

除了不能實例化抽象類之外,和普通Java類沒有任何區別;接口是完全不同的類型外。

5、訪問修飾符

抽象方法可有public.protected和default、abstract修飾符。不能用privatestatic.synchronize、 native 修飾;

接口屬性默認修飾符是publicstatic final (必須賦初值) ,方法默認修飾符是publicabstract. Java8 開始出現靜態方法,多加static關鍵字。

6、main方法

並且可以運行它;接口沒有main方法,因此不能運行它。

7、多繼承

抽象類可以繼承壹個類和實現多個接口;接口只可以繼承壹個或多個接口。

8、速度

抽象類比接口速度快;接口是稍微有點慢,因為它需要花時間去尋找在類中的實現方法。

9、添加新方法

如果往抽象類中添加新的方法,可以給它提供默認的實現,不需要改變現代碼;如果往接口中添加方法,並且該方法沒有默認實現,必須改變實現該接口的類。

擴展資料:

抽象類的運用意義

在面向對象方法中,抽象類主要用來進行類型隱藏。構造出壹個固定的壹組行為的抽象描述,但是這組行為卻能夠有任意個可能的具體實現方式。

這個抽象描述就是抽象類,而這壹組任意個可能的具體實現則表現為所有可能的派生類。模塊可以操作壹個抽象體。

由於模塊依賴於壹個固定的抽象體,因此它可以是不允許修改的;同時,通過從這個抽象體派生,也可擴展此模塊的行為功能。

為了能夠實現面向對象設計的壹個最核心的原則OCP(Open-Closed Principle),抽象類是其中的關鍵所在。

  • 上一篇:狼蛛鍵盤怎麽設置
  • 下一篇:射擊比賽的時候,那靶數咱算?
  • copyright 2024編程學習大全網