目录
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;
}