對於物件導向,有N多大師寫過N多文字。我也不敢妄言。就簡單說說自己的認識。
我們先來看看“對象”,什麼是對象?我們在現實生活中所能看到的一切都可以稱為對象。比如,企業、醫院、寵物、植物、人。。。等等。在物件導向編程中,對象往往被當作一個類,類有屬性和行為。我們以醫院為例來說,醫院有醫生,有護士等,在醫院可以做CT,B超等。在物件導向編程中,我們定義一個hospital 類,其有屬性(醫生,護士)和行為(做CT,做B超)。這就是一個簡單的物件導向編程。
其實,我們不光可以把醫院做為一個類,我們還可以把醫生做為一個類,醫生有其屬性(年齡,姓名,性別等)和其行為(檢查病人,開處方,做手術等)。甚至我們可以把兒科醫生定義為一個類,同樣,骨科,外科,內科等醫生,我們都可以分別定義為一個類,但這些類都具有同樣的屬性(年齡,姓名,性別等)甚至行為,難道每個類我們都要依次定義這些屬性嗎?答案是否定的。
我們可以定義一個醫生類,定義這些共有屬性和行為。兒科醫生,骨科醫生等都繼承自這個醫生類,這樣就具有了醫生類的所有屬性和行為。這在物件導向編程中被稱為繼承。
我們再來看一個例子。
人,有白人,黑人,黃種人等。人有年齡,性別,會吃飯。狗有白毛的狗,有黑色的狗等,狗有年齡,性別,會吃飯,咬人。
在這種情況下,我們可以把人定義為一個基類(有屬性 年齡,性別和行為吃飯等),黑人,白人,黃種人都繼承自“人”這個類。我們再“狗”定義為一個類(有屬性 年齡,性別和行為吃飯,咬人等),白狗,黑狗都繼承於這個“狗”類。
在這裡,我們可以看到,狗所具有的一些屬性在“人”這個類裡面已經具有了,我們沒有必要重新在“狗”類中定義的,“狗”類中只需要定義其獨特的行為或屬性,比如:咬人。而黑狗,白狗等繼承自“人”和“狗”這兩個類。這樣就不存在重複定義的問題了。
但在C#和Java中都不支援多重繼承。那怎麼辦呢?這時候就誕生了一個“介面”的概念。一個類可以實現多個介面。在上例中,可以定義一個“動物”的介面(人也是一種動物嘛),在介面中定義人和狗共有的年齡,性別,吃飯等屬性和行為。再定義一個“人”這樣的基類,並實現這個介面,然後白人,黑人等類再繼承“人”這個基類就可以了。狗也同理。
呵呵。就簡單的介紹這麼些吧。可能說的不清楚,大家去google一下,有很多介紹物件導向的文字。