1. 程式人生 > 其它 >類和物件——封裝

類和物件——封裝

技術標籤:C++c++

封裝是C++面向物件三大特性之一
封裝的意義:

  1. 將屬性和行為作為一個整體,表現生活中的事物
#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; }
  1. 將屬性和行為加以許可權控制
  • 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");
}