學習一門面向對象編程語言,我們必須得知道什麼是類?什麼是對象?
類(Class)實際上是對某種類型的對象定義變量和方法的原型。它表示對現實生活中一類具有共同特征的事物的抽象,是面向對象編程的基礎。
簡單地說,類是一種抽象的數據類型,是對一類對象的統一描述。在生活中,我們常常會把一組具有相同特性的事物歸為一類,當然根據分類的標准不同,劃分的類也是不相同的。汽車和人都是獨立的類,它們都有各自的特點。汽車這個大類還可以分為卡車,公共汽車,和小轎車等各種小類。人可以分為男人和女人。將這些思想反映在編程技術中就產生了類的概念。
類是對象概念在面向對象編程語言中的反映,是相同對象的集合。類描述了一系列在概念上有相同含義的對象,為這些對象統一定義了編程語言上的屬性和方法。
類是對某個對象的定義。它包含有關對象動作方式的信息,包括它的名稱、方法、屬性和事件。實際上它本身並不是對象,因為它不存在於內存中。當引用類的代碼運行時,類的一個新的實例,即對象,就在內存中創建了。雖然只有一個類,但能從這個類在內存中創建多個相同類型的對象。
可以把類看作“理論上”的對象,也就是說,它為對象提供藍圖,但在內存中並不存在。從這個藍圖可以創建任何數量的對象。從類創建的所有對象都有相同的成員:屬性、方法和事件。但是,每個對象都象一個獨立的實體一樣動作。例如,一個對象的屬性可以設置成與同類型的其他對象不同的值。
類是C#中功能最為強大的數據類型。類定義了數據類型的數據和行為。
類是具有相同數據結構(屬性)和相同操作功能(行為)對象的集合。對象就是符合某種類所產生的一個實例。對象與類的關系是:
對象的共性抽象為類,類的實例化就是對象。
類是一個抽象的概念,而對象是具體的,比如說車是一個類的話,張三的那輛奔馳車就是車這個類的一個實例,動物是一個類的話,李四的家養的那只貓就是動物類的一個對象實例。
人類就是一個類,這個類包含了所有人的共同屬性,像有四肢,有名字,會吃喝拉撒,會睡覺等等。而實例就是這個人類的具體實現,比如叫張三的這個人就是人類的一個實例,張三有著人類的所有屬性。張三是人類的一個實例,同樣李四也是人類的一個實例,但是張三和李四是不同的,因為他們是人類的兩個不同的實例,比如:張三的名字是“張三”,性別是“男”,而李四的名字是“李四”,性別是“女",他們雖然都有姓名,都有性別,但是其具體表現不同。
對象是類的一個實例,它具有確定的屬性,如張三(人的實例)身高180,體重70公斤,大學本科,男,23歲,漢族。
人類只有一個,人類的實例可以有無數個,當然包括你我他。
對象可以被創建和銷毀,但類是無所不在的(因為類是面向對象編程的基本組成單位)。
初學者往往混淆類和對象的關系,實際上它們之間是藍圖和產品的關系。類就是一張藍圖,它規定對象具有哪些特征。而對象就是根據這張藍圖生產出來的產品。同一個類產生的對象也是這樣,它們具有同樣的結構,卻可能在某些特性上有不同之處。
例如,桌子是一個類, 人們不斷打造各種尺寸和風格(屬性)的桌子(桌子的實例),打造桌子, 又不斷毀壞桌子,年復一年,舊的去了,新的又來,但桌子的概念沒變,它是一個抽象的概念。應該稱它為桌子類,以區別於打造的具體桌子。