WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國十大主機(jī)
類
類是程序設(shè)計(jì)語言中的一個(gè)概念,實(shí)際上是對某種類型的對象定義變量和方法的原型。它表示對現(xiàn)實(shí)生活中一類具有共同特征的事物的抽象,是面向?qū)ο?a href="/wiki/%E7%BC%96%E7%A8%8B" title="編程">編程的基礎(chǔ)。
類是一種面向?qū)ο?a href="/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA" title="計(jì)算機(jī)">計(jì)算機(jī)編程語言的構(gòu)造,是創(chuàng)建對象的藍(lán)圖,描述了所創(chuàng)建的對象共同的屬性和方法。
簡介[ ]
類是對某個(gè)對象的定義。它包含有關(guān)對象動(dòng)作方式的信息,包括它的名稱、方法、屬性和事件。實(shí)際上它本身并不是對象,因?yàn)樗淮嬖谟?a href="/wiki/%E5%86%85%E5%AD%98" title="內(nèi)存">內(nèi)存中。當(dāng)引用類的代碼運(yùn)行時(shí),類的一個(gè)新的實(shí)例,即對象,就在內(nèi)存中創(chuàng)建了。雖然只有一個(gè)類,但能從這個(gè)類在內(nèi)存中創(chuàng)建多個(gè)相同類型的對象。
可以把類看作“理論上”的對象,也就是說,它為對象提供藍(lán)圖,但在內(nèi)存中并不存在。從這個(gè)藍(lán)圖可以創(chuàng)建任何數(shù)量的對象。從類創(chuàng)建的所有對象都有相同的成員:屬性、方法和事件。但是,每個(gè)對象都象一個(gè)獨(dú)立的實(shí)體一樣動(dòng)作。例如,一個(gè)對象的屬性可以設(shè)置成與同類型的其他對象不同的值。
更嚴(yán)格的說類是由某種特定的元數(shù)據(jù)所組成的內(nèi)聚的包。它描述了一些對象的行為規(guī)則,而這些對象就被稱為該類的實(shí)例。類有接口和結(jié)構(gòu)。接口描述了如何通過方法與類及其實(shí)例互操作,而結(jié)構(gòu)描述了一個(gè)實(shí)例中數(shù)據(jù)如何劃分為多個(gè)屬性。類是與某個(gè)層的對象的最具體的類型。類還可以有運(yùn)行時(shí)表示形式(元對象),它為操作與類相關(guān)的元數(shù)據(jù)提供了運(yùn)行時(shí)支持。
支持類的編程語言在支持與類相關(guān)的各種特性方面都多多少少有一些微妙的差異。大多數(shù)都支持不同形式的類繼承。許多語言還支持提供封裝性的特性,比如訪問修飾符。類的出現(xiàn),為面向?qū)ο缶幊痰娜齻€(gè)最重要的特性(封裝性,繼承性,多態(tài)性),提供了實(shí)現(xiàn)的手段。
類的定義[ ]
在現(xiàn)實(shí)世界中,經(jīng)常有屬于同一個(gè)類的對象。例如,某輛自行車只是世界上很多自行車中的一輛。在面向?qū)ο?a href="/wiki/%E8%BD%AF%E4%BB%B6" title="軟件">軟件中,也有很多共享相同特征的不同的對象:矩形、雇用記錄、視頻剪輯等??梢岳眠@些對象的相同特征為它們建立一個(gè)藍(lán)圖。對象的軟件藍(lán)圖稱為類。
類是定義同一類所有對象的變量和方法的藍(lán)圖或原型。例如,可以建立一個(gè)定義包含當(dāng)前檔位等實(shí)例變量的自行車類。這個(gè)類也定義和提供了實(shí)例方法(變檔、剎車)的實(shí)現(xiàn)。
實(shí)例變量的值由類的每個(gè)實(shí)例提供。因此,當(dāng)創(chuàng)建自行車類以后,必須在使用之前對它進(jìn)行實(shí)例化。當(dāng)創(chuàng)建類的實(shí)例時(shí),就建立了這種類型的一個(gè)對象,然后系統(tǒng)為類定義的實(shí)例變量分配內(nèi)存。然后可以調(diào)用對象的實(shí)例方法實(shí)現(xiàn)一些功能。相同類的實(shí)例共享相同的實(shí)例方法。
除了實(shí)例變量和方法,類也可以定義類變量和類方法。可以從類的實(shí)例中或者直接從類中訪問類變量和方法。類方法只能操作類變量 - 不必訪問實(shí)例變量或?qū)嵗椒ā?
系統(tǒng)在第一次在[程序]中遇到一個(gè)類時(shí)為這個(gè)類建立它的所有類變量的拷貝 - 這個(gè)類的所有實(shí)例共享它的類變量。
類定義的一般形式[ ]
class Name { public: 類的公有接口 MFC類圖 private: 私有的成員函數(shù) 私有的數(shù)據(jù)成員定義 };
類的定義由類頭和類體兩部分組成。類頭由關(guān)鍵字 Class 開頭,然后是類名,其命名規(guī)則與一般標(biāo)識(shí)符的命名規(guī)則一致。類體包括所有的細(xì)節(jié),并放在一對花括號(hào)中。類的定義也是一個(gè)語句,所以要有分號(hào)結(jié)尾,否則會(huì)產(chǎn)生編譯錯(cuò)誤。
類體定義類的成員,它支持兩種類型的成員:
- 數(shù)據(jù)成員,它們指定了該類對象的內(nèi)部表示。
- 成員函數(shù),他們指定了該類的操作。
類成員有3種不同的訪問權(quán)限:
- 公有( public )成員可以在類外訪問。
- 私有( private )成員只能被該類的成員函數(shù)訪問。
- 保護(hù)( protected )成員只能被該類的成員函數(shù)或派生類的成員函數(shù)訪問。
數(shù)據(jù)成員通常是私有的,成員函數(shù)通常有一部分是公有的,一部分是私有的。公有的函數(shù)可以在類外被訪問,也稱之為類的接口??梢詾楦鱾€(gè)數(shù)據(jù)成員和成員函數(shù)指定合適的訪問權(quán)限。
類和對象[ ]
對象和類的說明其實(shí)很相似。實(shí)際上,類和對象之間的差別經(jīng)常是一些困惑的起源。在現(xiàn)實(shí)世界中很明顯,類不是它描述的對象 - 自行車的藍(lán)圖不是自行車。但是在軟件中就有點(diǎn)難區(qū)分類和對象。這部分是由于軟件對象只是現(xiàn)實(shí)世界的電子模型或抽象概念。但是也由于很多人用“對象”指類和它們的實(shí)例這兩者。
抽象類[ ]
抽象類被定義為永遠(yuǎn)不會(huì)也不能被實(shí)例化為具體的對象。它往往用于定義一種抽象上的概念,在類的繼承關(guān)系中它往往被定義在較上層的位置。在程序設(shè)計(jì)的實(shí)踐活動(dòng)中,抽象類與接口存在類似的地方,即它更偏重于對共通的方法和屬性進(jìn)行規(guī)約。但與接口存在一個(gè)非常大的差異則在于,抽象類往往可以規(guī)約一個(gè)共同的方法和屬性時(shí)提供一個(gè)對他們的實(shí)現(xiàn)。
以現(xiàn)實(shí)世界為例:"水果"可以算作一個(gè)抽象類,而"蘋果","香蕉"則可以作為它的派生類。區(qū)別在于,"水果"是個(gè)概念,它不會(huì)有實(shí)例,但是"蘋果"和"香蕉"則肯定會(huì)有實(shí)例。