C++用類(lèi)來(lái)描述對(duì)象,類(lèi)是對(duì)現(xiàn)實(shí)世界中相似事物的抽象,同是“雙輪車(chē)”的摩托車(chē)和自行車(chē),有共同點(diǎn),也有許多不同點(diǎn),
類(lèi)的概念
。“車(chē)”類(lèi)是對(duì)摩托車(chē)、自行車(chē)、汽車(chē)等相同點(diǎn)和不同點(diǎn)的提取與抽象,如所示。類(lèi)的定義分為兩個(gè)部分:數(shù)據(jù)(相當(dāng)于屬性)和對(duì)數(shù)據(jù)的操作(相當(dāng)于行為)。從程序設(shè)計(jì)的觀點(diǎn)來(lái)說(shuō),類(lèi)就是數(shù)據(jù)類(lèi)型,是用戶定義的數(shù)據(jù)類(lèi)型,對(duì)象可以看成某個(gè)類(lèi)的實(shí)例(某個(gè)類(lèi)的變量),類(lèi)和對(duì)象的關(guān)系與前面介紹的“結(jié)構(gòu)”和“結(jié)構(gòu)體變量”的關(guān)系相似,但又有不同,在本章稍后類(lèi)的定義一節(jié)中后具體說(shuō)明這一問(wèn)題。
類(lèi)是分層的
每一大類(lèi)中可分成若干小類(lèi),也就是說(shuō),類(lèi)是分層的,如圖8.2所示?蓪⑺械膱D形抽象成“圖形”類(lèi),該類(lèi)中共同的屬性有很多,這里只取“顏色”這個(gè)屬性,對(duì)所有圖形而言,都可定義“顯示”操作。同時(shí),“圖形”類(lèi)可進(jìn)一步分為“一維圖形”類(lèi)、“二維圖形”類(lèi)和其他類(lèi),根據(jù)形狀的不同,“一維圖形”類(lèi)可進(jìn)一步分為“直線”類(lèi)和“折線”類(lèi),“二維圖形”類(lèi)又可分為“正方形”類(lèi)和“圓”類(lèi),
電腦資料
《類(lèi)的概念》(http://www.ishadingyu.com)。下層的類(lèi)除了“繼承”了上層類(lèi)中定義的屬性和行為外,還可增加新的屬性和行為(如“圓”類(lèi)相比“二維圖形”類(lèi)增加了“圓心”和“半徑”屬性,增加了“求面積”這一行為),甚至可以在下層類(lèi)中重新定義上層類(lèi)已定義的屬性和行為(如“直線”類(lèi)、“折線類(lèi)”、“正方形”類(lèi)和“圓”類(lèi)中都重新定義了“圖形”類(lèi)中已定義的“顯示”操作)。
類(lèi)和對(duì)象的關(guān)系
對(duì)象需要從屬性和行為兩個(gè)方面進(jìn)行描述,類(lèi)是對(duì)象的封裝。類(lèi)的使用主要有以下幾個(gè)步驟:
定義類(lèi):C++中,分別用數(shù)據(jù)成員和函數(shù)成員來(lái)表現(xiàn)對(duì)象的屬性和行為。類(lèi)的定義強(qiáng)調(diào)“信息隱藏”,將實(shí)現(xiàn)細(xì)節(jié)和不允許外部隨意訪問(wèn)的部分屏蔽起來(lái)。因此,在類(lèi)定義中,需要用public或private將類(lèi)成員區(qū)分開(kāi)(此外,還有protected型的數(shù)據(jù)成員,后面課程會(huì)有介紹),外界不能訪問(wèn)程序的private成員,只能訪問(wèn)public數(shù)據(jù)成員,對(duì)象間的信息傳送也只能通過(guò)public成員函數(shù),保證了對(duì)象的數(shù)據(jù)安全。
實(shí)現(xiàn)類(lèi):即進(jìn)一步定義類(lèi)的成員函數(shù),使各個(gè)成員函數(shù)相互配合以實(shí)現(xiàn)接口對(duì)外提供的功能,類(lèi)的定義和實(shí)現(xiàn)是由類(lèi)設(shè)計(jì)者完成的。
使用類(lèi):通過(guò)該類(lèi)聲明一個(gè)屬于該類(lèi)的變量(即對(duì)象),并調(diào)用其接口(即public型的數(shù)據(jù)成員或函數(shù)成員),這是使用者的工作。