回覆列表
  • 1 # 使用者2122356244806

    設計思想不同,使用動機不同.

    抽象類和介面設計的時候,設計思想不同. 設計抽象類是自下而上的過程,因為呼叫者子類需要某些屬性和特有行為,所以呼叫者繼承抽象類 設計介面是自上而下的過程,介面規範某一行為,我某類需要這個行為,呼叫者實現某介面

    開發者使用的時候,使用動機不同. 開發者繼承抽象類是為了使用抽象類的屬性和行為; 開發者實現介面只是為了使用介面的行為.

    區別總結:

    區別一: 抽象類只能單繼承,介面能多實現

    區別二: 抽象類是一個類,可以被任意許可權修飾符修飾,靜態和非靜態屬性,final和非final屬性,可以有抽象方法和非抽象方法;

    介面只能被public,final修飾,只能有靜態方法,即使沒有顯示的宣告,而且是不可修改的;

    區別三: 抽象的事物不同: 抽象類是對類的抽象,介面是對行為的抽象; 抽象類是對整個類抽象,包括屬性,行為; 介面是對類的行為(區域性)進行抽象;

    區別四: 定義的時候,定義抽象類和介面的思想不同; 設計抽象類是自下而上的過程,我子類需要,所以我定義抽象類; 設計介面是自上而下的過程,我介面規範某一行為,我某類需要這個行為,我實現某介面;

    核心區別:

    呼叫者使用動機不同,實現介面是為了使用他規範的某一個行為;

    繼承抽象類是為了使用這個類屬性和行為.

    再簡單點說:

    我們知道抽象類是從子類中發現公共部分,然後泛化成抽象類,子類繼承該父類即可,但是介面不同。實現它的子類可以不存在任何關係,共同之處。例如貓、狗可以抽象成一個動物類抽象類,具備叫的方法。鳥、飛機可以實現飛Fly介面,具備飛的行為,這裡我們總不能將鳥、飛機共用一個父類吧!所以說抽象類所體現的是一種繼承關係,要想使得繼承關係合理,父類和派生類之間必須存在"is-a" 關係,即父類和派生類在概念本質上應該是相同的。對於介面則不然,並不要求介面的實現者和介面定義在概念本質上是一致的, 僅僅是實現了介面定義的規則而已。

  • 中秋節和大豐收的關聯?
  • 吃癸花子有好處嗎?