1、從程式設計思想上來講,抽象類首先是類,具有分類學的意義,有兩層含義,一是以研究物件的整體來劃分的,二是互斥性。類一定存在具體的物件才有意義。分類一般採用樹型層級進行。一般情況下,上一層分類都是對下一層分類的分類。而介面表達的是一種標準,本身不具有分類學意義,但可以作為一種分類的屬性。介面是從物件的區域性特徵或者功能來進行的,但它並不代表物件。因此類表述的是一種「是(is)」的概念,而介面表述的是一種「具有」或者「擁有」(has)的概念。至於抽象的概念,嚴格的講,在這個層次上,類本身就是一種抽象。但我們也可以把抽象類看作是對類本身的分類,在分類層級上,處於枝節點,而普通類處在葉子節點上。(理解類的時候不要從生物學的繼承來理解,類的繼承只是借用了這個生物學概念)
2、從語言級實現層面上來講,一般抽象類不能例項化,介面也不能例項化(介面本身也不具有例項化的意義).作為類來講,一般語言不支援類的多繼承,大多支援類實現多個介面(這主要是為了實現和理解)。一般來講,兩者的應用場景是不一樣的。但如果偷換概念的相互替代,從程式設計的技術實現上來講是可以的,但不利於理解。
另外,很多書中提到的物件導向程式設計中的面向介面程式設計的原則(多用介面,少用繼承),其實如果按照介面和類的內涵來講,這個原則提得有些牽強,一是沒有定量性標準,二是容易誤導開發人員。介面和類的使用應該是如果表達的是一種"is"的關係就用繼承(類),如果表達的是一種「has"則用介面。
對抽象類和介面的理解
abstract class inte ce 1.定義方式 abstract class demo abstract void method1 abstract void method2 可以有抽象和非抽象的方法 inte ce demo 不可以有具體的方法 2.使用上 所以根據他們的特性,abst...
對抽象類和介面的理解
二者不同 抽象類 1.抽象類中可以定義構造器 2.可以有抽象方法和具體方法 3.介面中的成員全都是 public 的 4.抽象類中可以定義成員變數 5.有抽象方法的類必須被宣告為抽象類,而抽象類未必要有抽象方法 6.抽象類中可以包含靜態方法 7.乙個類只能繼承乙個抽象類 介面 1.介面中不能定義構造...
我所理解的介面和抽象類
參考 在實踐過程中,抽象類和介面都經常用到。但是,對於什麼情況下該用抽象類,什麼情況下該用介面,總是有點搞不清楚。於是,在閱讀別人對著兩者理解之後,終於對兩者的區別有了更進一步的理解。抽象類重點在於對於屬性和方法的繼承 而介面則重在多個類 可能他們之間毫無聯絡 對同一種方法或者屬性的描述,體現了多型...