1。類可以實現多個介面而只能繼承乙個超類。
2。抽象類可以有非抽象方法而介面的方法只能都是抽象的。
3。抽象類可以定義和使用變數而介面則不可以。
4。抽象類中的方法可以有各種不同的修飾符,而介面中的方法預設都是public,不允許字面定修飾符。
乙個介面中的成員函式可以在不同的類中安裝,而它的成員函式可以有很多種的實現方法,但是抽象類卻不能象這樣,它必須是由子類來繼承,然後由子類來實現它的成員函式,如果其他的孫類繼承了這個子類,只能過載這成員函式,但是抽象類的實現方法卻不能改變。
1。從類的層次結構上看,抽象類通常是在層次的頂端,但在實際的設計實踐當中,抽象類應當是最後出現的,換句話說,應當是先有具體類後有抽象類。為什麼?實際上抽象類的獲取有點像數學中的提取公因式:ax+bx+cx,x就是抽象類,如果你沒有前面的式子,你怎麼知道x是不是公因式呢?在這點上,也符合人們認識世界的過程,先具體後抽象。因此在設計過程中如果你得到大量的具體概念並從當中找到其共性時,這個共性的集合就是抽象類應當是沒錯的。
2。inte***ce從表面上看,和抽象類很相似,但用法完全不同。它的基本功能就是把一些毫不相關的類(概念)集合在一起形成乙個新的、可集中操作的「新類」。我給學生的乙個典型例子就是「司機」。誰可以當司機?誰都可以,只要領取了駕照。所以我不管你是學生,白領、藍領還是老闆,只要有駕照就是司機。
inte***ce driver
class studentdriver implements driver
class whtiecollaremployeedrive
r implements driver
class bluecollaremployeedriver
implements driver
class bossdriver extends implements driver
當定義了「汽車」類後,就可以指定「司機」了。
class car
這時候,car的物件並不關心這個司機到底是幹什麼的,他們的唯一共同點是領取了駕照(都實現了driverlicence介面)。這個,應當是介面最強大的地方也是抽象類無法比擬的。
抽象類和介面關係
問 抽象類能實現介面嗎?可以。問 介面能繼承抽象類嗎?不可以。問 抽象類能繼承抽象類嗎?可以。問 介面能繼承介面嗎?可以。介面可以繼承介面 子介面可以實現父介面裡的方法。實現了子介面的類可以直接呼叫。屬性 介面中的屬性預設被static final 修飾的常量。抽象類中可以有變數。介面常量只能被pu...
Java抽象類和介面和繼承之間關係
如果是抽象類實現乙個介面,那麼抽象類可以不具體實現介面的方法 保持其抽象性 而由其子類去實現。定義介面a public inte ce a public void methoda 抽象類實現介面a,但是沒有實現具體的方法methoda.public abstract class abstractb ...
介面和抽象類的關係
定義方面,抽象類 包含乙個抽象方法的類。介面 由全域性常量和公共抽象方法組成。抽象類只能繼承 extends 介面只能實現 implement 介面不能繼承抽象類 要繼承抽象類就要覆寫抽象類裡面的方法,抽象方法中可以有方法體,介面中的抽象方法是沒有方法身體的,所以這一點上就不能繼承。但允許實現多個介...