抽象的中文概念非常形象,簡單來說就是「抽取出來比較像的部分」。
那麼,在物件導向的領域裡,抽取什麼東西比較像的部分?
還記得前面給類下的定義麼?我們一起來回顧一下:類就是一組相似事物的統稱。
再結合我們物件的定義:物件就是乙個具體的類,乙個真實存在的類。
我們就很容易發現了抽象的詳細含義:抽取多個物件或者類中比較像的部分。
注:史派克:《貓和老鼠》中的鬥牛犬
這裡的抽象分為兩個層次:
第乙個層次:物件 抽象成 類。
例如歐巴馬和梅西抽象成「人」,這一層的抽象主要是將「屬性類似」的物件抽取成類。
注意這裡的屬性類似是指屬性類別一致,而屬性的取值是不一樣的。例如如果將「歐巴馬」和「梅西」都抽象成「人」,那麼其屬性有身高、體重、性別、年齡等,但「歐巴馬」和「梅西」的這些屬性取值肯定是不同的。
第二個層次(或更高層次):將 類 抽象成超類(或者說父類,其實就是更高一級的類),
例如人和豬抽象成「動物」,這一層的抽象主要是將「行為類似」的類抽象成父類。
注意這裡是「行為類似」,而不是第一層抽象的那樣「屬性類似」,因為在物件導向領域,行為一致的話就認為是同一類的,當然也不能是完全不同,完全不同的話就沒有相似點,也就無法抽象成類了,所以這一層抽象的重點是「相似」。
實際應用中,抽象的層次是不限的,根據業務的需要,或者不同的觀察角度,可以抽象出很多層。
【抽象的作用】
抽象並不是物件導向領域特有的概念和方法,在人類的科學研究中,抽象是再常見不過的技術了:生物學將豬馬牛羊等生物抽象為「動物」,將花草樹木等抽象為「植物」,醫學將心肝脾肺腎抽象為「內臟」,化學將碳氫氧氮等抽象為「元素」,物理學上將地球、火星、水星等抽象為「行星」。。。。。。等等。
又比如我們的高中學習課程,也抽象出「語文、數學、物理、化學」等學科,我們的大學課程,又分為了幾十上百個專業。
在人類的科學研究,以及日常生活和學習中,抽象最主要的作用是「劃分類別」,而劃分類別的主要目的其實還是「隔離關注點,降低複雜度」。因為這個世界太複雜了,複雜到乙個人不可能同時關注所有的內容。心理學上的研究證實,人同時能關注的事務不超過 7+/-2個。可以想象,如果沒有抽象分類,我們將面對乙個混沌的世界,同時關注如此多的內容,即使是天才,估計也要崩潰。
在物件導向領域,抽象也不例外。抽象的主要作用也是劃分類別,所以,抽象是物件導向領域裡面發現類的主要方法
抽象類 抽象方法詳解
抽象類 用abstract關鍵字來修飾乙個類時,這個類叫做抽象類 1,含有抽象方法的類就叫抽象類。2,抽象類中的抽象方法必須被實現!3,如果乙個子類沒有實現父類中的抽象方法,則子類也成為了乙個抽象類!4,抽象類中的普通方法,可以不必實現。2.方法 1,含有抽象方法的類就叫抽象類。2,抽象類中的抽象方...
5 抽象工廠模式
抽象工廠的作用是建立產品族。下面將各種具體的pizza進行了分類和抽象,如加州乳酪pizza和紐約乳酪pizza進行抽象,同一種pizza,不同的地方所使用的原材料是不同的。所以從pizza這個抽象類中,派生出乙個乳酪pizza類。乳酪pizza類中有乙個原料工廠,由這個工廠 原材料。這樣pizza...
php抽象介面詳解
在物件導向程式設計中有很多地方會用到介面,那麼介面是什麼。我個人理解介面就是乙個協議,乙個我們如果使用了某個東西,就得去遵守的協議。但是這個協議只是要求你做某個事情,不管你怎麼做,也就是說必須得實現它的方法,至於怎麼實現你自己做。這裡如果直接講介面得語法,感覺沒有多大意義所以 我就從實現以及思想的變...