接口和抽象類

抽象類和普通類的區別

抽象類和接口的區別

一、概念不同。接口是對動做的抽象,抽象類是對本質的抽象。
抽象類表示的是,這個對象是什麼。接口表示的是,這個對象能作什麼。好比,男人,女人,這兩個類(若是是類的話……),他們的抽象類是人。說明,他們都是人。人能夠吃東西,狗也能夠吃東西,你能夠把「吃東西」定義成一個接口,而後讓這些類去實現它。因此,在高級語言上,一個類只能繼承一個類(抽象類)(正如人不可能同時是生物和非生物),可是能夠實現多個接口(吃飯接口、走路接口)。spa

二、使用狀況:0設計

  • a.抽象類 和 接口 都是用來抽象具體對象的. 可是接口的抽象級別最高
  • b.抽象類能夠有具體的方法 和屬性,  接口只能有抽象方法和不可變常量
  • c.抽象類主要用來抽象類別,接口主要用來抽象功能.
  • d.抽象類中,且不包含任何實現,派生類必須覆蓋它們。接口中全部方法都必須是未實現的。
  • e.接口是設計的結果 ,抽象類是重構的結果

三、使用方向:當你關注一個事物的本質的時候,用抽象類;當你關注一個操做的時候,用接口。對象

 

 

抽象類中的抽象方法和非抽象方法在不加修飾符的狀況下,都是默認的defaulblog

 

關於抽象類繼承

JDK 1.8之前,抽象類的方法默認訪問權限爲protected接口

JDK 1.8時,抽象類的方法默認訪問權限變爲defaultit

 

關於接口重構

JDK 1.8之前,接口中的方法必須是public的權限

JDK 1.8時,接口中的方法能夠是public的,也能夠是default的方法

JDK 1.9時,接口中的方法能夠是private的

 

Java8的接口方法能夠有以下定義

only public, abstract, default, static and strictfp are permitted

相關文章
相關標籤/搜索