第四课 类和对象-封装
C++面向对象的三大特性为:封装、继承、多态
具有相同性质的对象,我们可以抽象为类
4.1封装
4.1.1封装的意义
- 将属性和行为作为一个整体,表现生活中的实物
语法:class 类名{ 访问权限: 属性 / 行为 };
类中的属性和行为 统一称为成员
属性 成员属性 成员变量
行为 成员函数 成员方法
// 圆周率
const double PI = 3.14;
// 定义一个类
class Circle
{
// 访问权限,公共属性
public:
// 属性 半径
int m_r;
// 行为 计算周长
double claculate_l()
{
return 2 * PI * m_r;
};
};
int main()
{
// 实例化 通过圆类创造具体的圆
Circle c1;
// 给圆对象进行赋值
c1.m_r = 10;
cout << "圆的周长为" << c1.claculate_l() << endl;
system("pause");
return 0;
}
* 类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
1.public 公共权限 类内可以访问,类外也可以访问
2.protected 保护权限 类内可以访问,类外不可以访问 继承时,儿子可以访问父亲中的保护内容
3.private 私有权限 类内可以访问,类外不可以访问 继承时,儿子不可以访问父亲中的私有内容
class Person
{
public:
// 公共权限
string m_Name;
protected:
// 保护权限
string m_Car;
private:
// 私有权限
string m_Password;
public:
void func()
{
m_Name = "张三";
m_Car = "BYD";
m_Password = "121221";
}
};
int main()
{
Person p1;
p1.m_Name = "lisa";
//p1.m_Car = "BMW"; //保护权限内容,在类外访问不到
//p1.m_Password = "123454"; //私有权限内容,在类外访问不到
return 0;
}
4.1.2 struct和class的区别 在C++中 struct和class唯一的区别就在于 **默认的访问权限不同** 区别: * struct 默认权限为公共 * class 默认权限为私有
class C1
{
int m_A; // 默认权限为私有权限
}
struct C2
{
int m_A; // 默认权限为公共权限
}
4.1.3 成员属性设置为私有
优点:将所有成员属性设置为私有,可以自己控制读写权限
对于写权限,我们可以检测数据的有效性
class Person
{
public:
void set_name(string name)
{
m_Name = name;
}
void show_name()
{
cout << "姓名:" << m_Name << endl;
}
void set_age(int age)
{
if (age < 0 || age>160)
{
cout << "输入年龄有误" << endl;
return;
}
m_Age = age;
}
void show_age()
{
cout << "年龄:" << m_Age << endl;
}
void set_Idol(string Idol)
{
m_Idol = Idol;
}
private:
string m_Name;
int m_Age = 20;
string m_Idol;
};
int main()
{
Person p1;
p1.set_age(25);
p1.show_age();
p1.set_Idol("aimyon");
p1.set_name("112");
p1.show_name();
system("pause");
return 0;
}

浙公网安备 33010602011771号