1. 程式人生 > >java 抽象類和接口的差別

java 抽象類和接口的差別

rac static start 靜態方法 ane 沒有 類型 text 子類

??

語法層面上:

1)抽象類能夠提供成員方法的實現細節。而接口中僅僅能存在public abstract 方法。

  2)抽象類中的成員變量能夠是各種類型的。而接口中的成員變量僅僅能是public static final類型的。

  3)接口中不能含有靜態代碼塊以及靜態方法。而抽象類能夠有靜態代碼塊和靜態方法;

  4)一個類僅僅能繼承一個抽象類。而一個類卻能夠實現多個接口。

補充:抽象類中可以不提供abstart方法,相同該類也不可以實例化

設計層面上:

抽象是繼承是“是不是”的關系。接口實現是“有沒有”的關系。不如說有個抽象類Door(門),一個門類的繼承子類WoodDoor(木門)。這個就是抽象類的繼承。

比方有個Bird(鳥)類。有一個(Airplane)飛機類,它們都有一個方法fly()方法。這裏就沒有辦法用抽象類來解決問題了,要用接口,由於顯然鳥和飛機不是子類和父類的關系,它們僅僅是有共同的行為方法,它們都有fly方法,這個是“有沒有”的概念。


java 抽象類和接口的差別