面向?qū)ο笥腥筇卣鳎悍庋b、繼承荐糜、多態(tài)卧秘。(具體會(huì)在之后的課程里講)
C++用三個(gè)關(guān)鍵詞來表示訪問范圍:public, protected, private。
public和private作用就是實(shí)現(xiàn)封裝姆蘸。類外的代碼可以訪問public成員而不能訪問private成員墩莫;private成員只能由類成員訪問。
protected的作用則是實(shí)現(xiàn)繼承逞敷。protected成員可以被派生類(也叫子類)對象訪問狂秦,不能被用戶代碼類外的代碼訪問。
例1:private修飾屬性和方法
#include <iostream>
using namespace std;
class Dog
{
private:
string name;
void run()
{
cout << "running..." << endl;
}
};
int main()
{
Dog dog;
dog.name = "Wang Cai";
dog.run();
return 0;
}
編譯程序推捐,報(bào)錯(cuò):
這是因?yàn)榱盐剩琻ame和run()都是私有的,類外的main()沒有權(quán)限訪問dog.name和dog.run()
例2:將private改為protected
#include <iostream>
using namespace std;
class Dog
{
protected:
String name;
void run()
{
cout << "running..." << endl;
}
};
int main()
{
Dog dog;
dog.name = "Wang Cai";
dog.run();
return 0;
}
編譯程序,報(bào)錯(cuò):
報(bào)錯(cuò)理由跟上面的差不多堪簿,因?yàn)閚ame和run()是protected, 外部的main()沒有權(quán)限訪問痊乾。
例3:將protected改為public
#include <iostream>
using namespace std;
class Dog
{
public:
string name;
void run()
{
cout << "running..." << endl;
}
};
int main()
{
Dog dog;
dog.name = "Wang Cai";
dog.run();
return 0;
}
程序正常運(yùn)行。運(yùn)行結(jié)果:
running...
有些人可能會(huì)想椭更,我不加任何關(guān)鍵字哪审,后果會(huì)怎樣?
例4:不加修飾符
#include <iostream>
using namespace std;
class Dog
{
string name;
void run()
{
cout << "running..." << endl;
}
};
int main()
{
Dog dog;
dog.name = "Wang Cai";
dog.run();
return 0;
}
編譯報(bào)錯(cuò)虑瀑,錯(cuò)誤與例1相同:
可見如果不加任何關(guān)鍵字湿滓,無論是屬性還是方法,默認(rèn)都是private舌狗。
加入少兒信息學(xué)奧賽學(xué)習(xí)QQ群請掃左側(cè)二維碼叽奥,關(guān)注微信公眾號請掃右側(cè)二維碼