類和物件——封裝
阿新 • • 發佈:2020-12-24
封裝是C++面向物件三大特性之一
封裝的意義:
- 將屬性和行為作為一個整體,表現生活中的事物
#include <iostream>
using namespace std;
const double PI = 3.14;
//class表示要設計一個類,類後面緊跟著的就是類名稱
class Circle{
//訪問許可權
public:
//屬性
//半徑
int m_r;
//行為
//獲取圈的周長的函式
double calculateZC(){
return 2*PI*m_r;
}
};
int main(){
//通過圓類 建立具體的圓(物件)
//例項化(通過一個類建立一個物件的過程)
Circle c1;
//給圓物件的屬性進行賦值操作
c1.m_r = 10;
cout << "圓的周長為" << c1.calculateZC()<< endl;
return 0;
}
- 將屬性和行為加以許可權控制
- public 公共許可權 :類內可以訪問,類外可以訪問
- protected 保護許可權:類內可以訪問,類外不可以訪問 兒子可以訪問父親中的保護內容
- private 私有許可權:類內可以訪問,類外不可以訪問 兒子不可以訪問父親中的私有內容
#include <iostream>
#include <string>
using namespace std;
class Person{
public:
string m_Name;//姓名
protected:
string m_Car;//汽車
private:
int m_Password;//銀行卡密碼
private:
void func(){ //類內都可以訪問
m_Name="張三";
m_Car="賓士";
m_Password=12345;
}
};
int main(){
Person s1;
s1.m_Name = "李四" ;
s1.m_Car = "BMW";
s1. m_Password = 123;
}
結果:
struct和class的區別:
在C++中struct和class唯一的區別在於預設訪問許可權不同
- struct的預設訪問許可權為公共
- class的預設訪問許可權為私有
成員屬性設定為私有
優點1:將所有成員屬性設定為私有,可以自己控制讀寫許可權
優點2:對於寫許可權,我們可以檢測資料的有效性
#include <iostream>
#include <string>
using namespace std;
class Person{
//通過pubic提供的介面來控制讀寫許可權
public:
//設定姓名
void setName(string name ){
m_Name = name;
}
//獲取姓名
string getName(){
return m_Name;
}
//獲取年齡 可讀可寫 如果想修改(年齡範圍必須是0~150直接)
int getAge(){
m_Age = 0;
return m_Age;
}
//設定年齡
void setAge(int age){
if(age < 0 || age > 0){
m_Age = 0 ;
cout << "你這個老妖精!" << endl;
return ;
}
m_Age = age ;
}
//設定情人 只寫
void setLover(string lover){
m_Lover = lover;
}
private:
//性別 可讀可寫
string m_Name;
//年齡 只讀
int m_Age;
//情人 只寫
string m_Lover;
};
int main(){
Person p;
p.setName("張三");
cout << "性名為:" << p.getName() << endl;
p.setAge(43);
cout << "年齡為:" << p.getAge() << endl;
p.setLover("dlrb");
}