4 類和對象
面向對象三大特性:封裝、繼承、多态
萬物皆對象。對象= 屬性+行為
類是抽象的對象。 比如路上有很多(具體的)車,但抽象出來都屬于車。
定義類的文法:
class 類名
{
通路權限:
屬性;
行為;
};
4.1 封裝
封裝意義:
- 結合屬性和行為,符合現實。
- 權限控制
圓類
const double PI 3.1415;
class Circle
{
public: //通路權限
//屬性
int m_r; //半徑
//行為
double cal_circumference()
{
return 2 * PI * m_r;
}
};
//使用類
int main(){
Circle c1;
c1.m_r = 10;
cout << c1.cal_circumference() << endl;
}
4.1.1 權限控制
權限控制是封裝的另一個意義。
通路權限有三種
public 公開
protected 保護 (子類可以通路父類的保護内容,具體看後面的繼承)
private 私有 (子類不可以通路父類的私有内容)
隻有公開的成員才能類外通路。
例:
class Person
{
public :
string m_Name;
protected:
string m_Car;
private:
int m_Password;
public:
void func()
{
m_Name = "張三";
m_Car = "拖拉機";
m_Password = 123456;
}
};
int main() {
Person p;
p.m_Name = "李四";
p.m_Car = "五菱"// 錯誤,類外不能通路protected和private成員
}
4.1.2 struct 和 class
struct 成員預設是public
class 成員預設是private
4.1.3 成員屬性設定為私有
class Person
{
public:
void set_name(string name){
m_Name = name;
}
void get_name(){
return m_Name;
}
private:
string m_Name;
}