目錄
C++ 面向對象的三大特性:封裝、繼承、多態
C++認爲萬物皆爲對象,對象上有其屬性和行爲
1 封裝的意義
封裝是C++面向對象的三大特性之一;
封裝的意義:
- 將屬性和行爲作爲一個整體,表現生活中的事務
- 將屬性和行爲加以權限控制;
封裝意義一:在設計類的時候,將屬性和行爲寫在一起,表現事務;
語法:class 類名{ 訪問權限 :屬性/行爲};
#include<iostream>
using namespace std;
//pi
const double PI = 3.14;
// 設計一個圓類,求⚪的周長
class Circle
{
//訪問權限
//公共權限
public:
//屬性
//半徑
int m_r;
//行爲
double calculateZC()
{
return 2 * PI * m_r;
}
};
int main()
{
//通過⚪類可以創建具體對象;
Circle cl;
cl.m_r = 10;
cout << "圓的周長 = " << cl.calculateZC() << endl;
system("pause");
return 0;
}
//student 設計一個學生類,屬性有姓名和學號
class student {
public:
//類中的屬性和行爲統稱爲成員
//屬性 成員屬性 成員變量
//行爲 成員函數 成員方法
//屬性
string m_Name;
int m_Id;
//行爲
void showstudent()
{
cout << "姓名: " << m_Name << " 學號 : " << m_Id << endl;
}
//給姓名賦值
void setName(string name)
{
m_Name = name;
}
void setId(int id)
{
m_Id = id;
}
};
int main()
{
student st;
//st.m_Name = "張三";
//st.m_Id= 12344;
st.setName("張三");
st.setId(123456);
st.showstudent();
system("pause");
return 0;
}
封裝意義二:
類在設計時,可以把屬性和行爲放在不同的權限下,加以控制;
訪問權限有三種:
1 public 公共權限
2 protected 保護權限
3 private 私有權限
//訪問權限
//三種
//公共權限 public 成員類內可以訪問 類外也可以訪問
//保護權限 protected 類內可以訪問,類外不可以訪問 兒子可以訪問父親中保護的內容
//私有權限 private 成員 類內可以訪問,類外不可以訪問 兒子不可以訪問父親中私有內容
class Person {
//公共權限
public:
string m_Name;
protected:
string m_Car;
private:
int m_Password;
public:
void func(string car)
{
m_Name = "張三";
m_Car = "car";
m_Password = 123456;
}
};
int main()
{
Person st;
//st.m_Name = "張三";
//st.m_Id= 12344;
st.m_Name = "李四";
st.func("卡車");
system("pause");
return 0;
}
2 struct和class的區別
struct和class唯一的區別在於默認的訪問權限不同
struct 默認權限爲公共;
class默認權限爲私有;
//struct和class的區別
class C1 {
int m_A;//默認權限爲私有
};
struct C2 {
int m_A;//默認權限爲公共
};
int main()
{
Person st;
C1 c1;
//c1.m_A = 10;
C2 c2;
c2.m_A = 10;
system("pause");
return 0;
}
3 將成員屬性設置爲私有
優點1:將所有成員屬性設置爲私有,可以自己控制讀寫權限;
優點2:對於寫可以檢測數據的有效性;
//成員屬性設置爲私有
class Personn {
public:
//寫姓名
void setName(string name)
{
m_Name = name;
}
//獲取姓名
string getName()
{
return m_Name;
}
int getAge()
{
m_Age = 0;
return m_Age;
}
void setLover(string lover)
{
m_Lover = lover;
}
private:
//可讀可寫
string m_Name;
//只讀
int m_Age;
//只寫
string m_Lover;
};
int main()
{
Personn one;
one.setName("zhangsan");
cout << "姓名: " << one.getName() << endl;
cout << "年齡: " << one.getAge() << endl;
one.setLover = "lisi";
system("pause");
return 0;
}