類和類的定義
更新時(shí)間: 2007-05-27 01:39:11來(lái)源: 粵嵌教育瀏覽量:852
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,有經(jīng)常接觸類、對(duì)象等專業(yè)名詞;到底什么是類、什么是對(duì)象呢?在程序又是怎樣運(yùn)用呢?類是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,它實(shí)際是一種新的數(shù)據(jù)類型,也是實(shí)現(xiàn)抽象類型的工具,因?yàn)轭愂峭ㄟ^(guò)抽象數(shù)據(jù)類型的方法來(lái)實(shí)現(xiàn)的一種數(shù)據(jù)類型。類是對(duì)某一類對(duì)象的抽象;而對(duì)象是某一種類的實(shí)例,因此,類和對(duì)象是密切相關(guān)的。沒(méi)有脫離對(duì)象的類,也沒(méi)有不依賴于類的對(duì)象。
什么是類
類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。這有點(diǎn)像C語(yǔ)言中的結(jié)構(gòu),不同的就是結(jié)構(gòu)沒(méi)有定義所說(shuō)的“數(shù)據(jù)相關(guān)的操作”,“數(shù)據(jù)相關(guān)的操作”就是我們平常經(jīng)常看到的“方法”,因此,類具有更高的抽象性,類中的數(shù)據(jù)具有隱藏性,類還具有封裝性。
類的結(jié)構(gòu)(也即類的組成)是用來(lái)確定一類對(duì)象的行為的,而這些行為是通過(guò)類的內(nèi)部數(shù)據(jù)結(jié)構(gòu)和相關(guān)的操作來(lái)確定的。這些行為是通過(guò)一種操作接口來(lái)描述的(也即平時(shí)我們所看到的類的成員函數(shù)),使用者只關(guān)心的是接口的功能(也就是我們只關(guān)心類的各個(gè)成員函數(shù)的功能),對(duì)它是如何實(shí)現(xiàn)的并不感興趣。而操作接口又被稱為這類對(duì)象向其他對(duì)象所提供的服務(wù)。
類的定義格式
類的定義格式一般地分為說(shuō)明部分和實(shí)現(xiàn)部分。說(shuō)明部分是用來(lái)說(shuō)明該類中的成員,包含數(shù)據(jù)成員的說(shuō)明和成員函數(shù)的說(shuō)明。成員函數(shù)是用來(lái)對(duì)數(shù)據(jù)成員進(jìn)行操作的,又稱為“方法”。實(shí)現(xiàn)部分是用來(lái)對(duì)成員函數(shù)的定義。概括說(shuō)來(lái),說(shuō)明部分將告訴使用者“干什么”,而實(shí)現(xiàn)部分是告訴使用者“怎么干”。
類的一般定義格式如下:
class <類名>
{
public:
<成員函數(shù)或數(shù)據(jù)成員的說(shuō)明>
private:
<數(shù)據(jù)成員或成員函數(shù)的說(shuō)明>
};
<各個(gè)成員函數(shù)的實(shí)現(xiàn)>
下面簡(jiǎn)單地對(duì)上面的格式進(jìn)行說(shuō)明:class是定義類的關(guān)鍵字,<類名>是種標(biāo)識(shí)符,通常用T字母開(kāi)始的字符串作為類名。一對(duì)花括號(hào)內(nèi)是類的說(shuō)明部分(包括前面的類頭)說(shuō)明該類的成員。類的成員包含數(shù)據(jù)成員和成員函數(shù)兩部分。從訪問(wèn)權(quán)限上來(lái)分,類的成員又分為:公有的(public)、私有的(private)和保護(hù)的(protected)三類。公有的成員用public來(lái)說(shuō)明,公有部分往往是一些操作(即成員函數(shù)),它是提供給用戶的接口功能。這部分成員可以在程序中引用。私有的成員用private來(lái)說(shuō)明,私有部分通常是一些數(shù)據(jù)成員,這些成員是用來(lái)描述該類中的對(duì)象的屬性的,用戶是無(wú)法訪問(wèn)它們的,只有成員函數(shù)或經(jīng)特殊說(shuō)明的函數(shù)才可以引用它們,它們是被用來(lái)隱藏的部分。保護(hù)類(protected)將在以后介紹。
關(guān)鍵字public,private和protected被稱為訪問(wèn)權(quán)限修飾符或訪問(wèn)控制修飾符。它們?cè)陬愺w內(nèi)(即一對(duì)花括號(hào)內(nèi))出現(xiàn)的先后順序無(wú)關(guān),并且允許多次出現(xiàn),用它們來(lái)說(shuō)明類成員的訪問(wèn)權(quán)限。
其中,<各個(gè)成員函數(shù)的實(shí)現(xiàn)>是類定義中的實(shí)現(xiàn)部分,這部分包含所有在類體內(nèi)說(shuō)明的函數(shù)的定義。如果一個(gè)成員函數(shù)的類體內(nèi)定義了,實(shí)現(xiàn)部分將不出現(xiàn)。如果所有的成員函數(shù)都在類體內(nèi)定義,則實(shí)現(xiàn)部分可以省略。
下面給出一個(gè)日期類定義的例子:
class TDate
{
public:
void SetDate(int y, int m, int d);
int IsLeapYear();
void Print();
private:
int year, month, day;
};
//類的實(shí)現(xiàn)部分
void TDate::SetDate(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
int TDate::IsLeapYear()
{
return(year%4==0 && year%100!=0) || (year%400==0);
}
void TDate::Print();
{
cout<<year<<"."<<month<<"."<<day<<endl;
}
這里出現(xiàn)的作用域運(yùn)算符::是用來(lái)標(biāo)識(shí)某個(gè)成員函數(shù)是屬于哪個(gè)類的。
該類的定義還可以如下所示:
class TDate
{
public:
void SetDate(int y, int m, int d)
{year=y; month=m; day=d;}
int IsLeapYear()
{return(year%4==0 && year%100!=0) || (year%400==0);}
void Print()
{cout<<year<<"."<<month<<"."<<day<<endl;}
private:
int yeay, month, day;
}
這樣對(duì)成員函數(shù)的實(shí)現(xiàn)(即函數(shù)的定義)都寫(xiě)在了類體內(nèi),因此類的實(shí)現(xiàn)部分被省略了。如果成員函數(shù)定義在類體外,則在函數(shù)頭的前面要加上該函數(shù)所屬類的標(biāo)識(shí),這時(shí)使用作用域運(yùn)算符::。
定義類時(shí)應(yīng)注意的事項(xiàng)
1、在類體中不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。
2、類中的數(shù)據(jù)成員的類型可以是任意的,包含整型、浮點(diǎn)型、字符型、數(shù)組、指針和引用等。也可以是對(duì)象。另一個(gè)類的對(duì)象,可以作該類的成員,但是自身類的對(duì)象是不可以的,而自身類的指針或引用又是可以的。當(dāng)一個(gè)類的對(duì)象用為這個(gè)類的成員時(shí),如果另一個(gè)類的的定義在后,需要提前說(shuō)明。
3、一般地,在類體內(nèi)先說(shuō)明公有成員,它們是用戶所關(guān)心的,后說(shuō)明私有成員,它們是用戶不感興趣的。在說(shuō)明數(shù)據(jù)成員時(shí),一般按數(shù)據(jù)成員的類型大小,由小至大說(shuō)明,這樣可提高時(shí)空利用率。
4、經(jīng)常習(xí)慣地將類定義的說(shuō)明部分或者整個(gè)定義部分(包含實(shí)現(xiàn)部分)放到一個(gè)頭文件中。
粵嵌動(dòng)態(tài)
推薦閱讀
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場(chǎng)招聘會(huì)
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國(guó)家級(jí)職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式
- ·嵌入式系統(tǒng)中的低功耗設(shè)計(jì)策略與實(shí)現(xiàn)路徑
- ·深圳市軒宇軟件開(kāi)發(fā)有限公司專場(chǎng)招聘會(huì)
- ·嵌入式系統(tǒng)中的代碼空間優(yōu)化:策略與實(shí)踐