封装

c++三大特性(封装)

1. 封装的意义

  • 属性 成员属性 成员变量

    行为 成员函数 成员方法

  • 将属性和行为作为一个整体,表现生活中的事物

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//设计一个学生类,属性:姓名和学号
//,可以给姓名和学号赋值,可以显示学生的姓名和学号
#include <iostream>
using namespace std;
class student
{
public:
//给姓名赋值
void setName(string Name) {
name = Name;
}
//给学号赋值
void setId(string Id) {
id = Id;
}
//显示学生姓名
void showStudent() {
cout << "姓名:" << name << "\n学号:" << id << endl;
}
private:
string name;
string id;
};
int main() {
student s1;
s1.setId("04161034");
s1.setName("hxx");
s1.showStudent();
return 0;
}

运行结果:

1
2
姓名:hxx
学号:04161034
  • 将属性和行为加以权限控制

    (1)公共权限 public 类内可以访问 类外可以访问
    (2)保护权限 protected 类内可以访问 类外不可以访问
    (3)私有权限 private 类内可以访问 类外不可以访问

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 #include <iostream>
using namespace std;
class Person {
//公共权限
public:
string name;//姓名
protected:
string car;
private:
int password;//银行卡密码
public:
void set() {
name = "张三";
car = "卡车";
password = 123456;
}
};
int main() {
Person p1;
p1.name = "hxx";
//p1.car = "小车";//报错,类外不可访问
//p1.password = 123;//报错
return 0;
}

2. struct 和 class 的区别

  • 在c++中struct 和 class 的区别在于默认的访问权限不同

    (1)struct 默认权限为公共

    (2)class 默认权限为私有

3. 成员属性设置为私有

  • 优点

    (1)将所有成员属性设置为私有,可以自己控制读写权限

    (2)对于写权限,可以检测数据的有效性

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
class Person {
private:
//姓名 可读可写
string name;
//年龄 可读可写
int age;
public:
//利用公共行为来设置姓名
void setName(string Name) {
name = Name;
}
//获取姓名
string getName() {
return name;
}
//设置年龄
void setAge(int Age) {
if (Age > 150 || Age < 0) {
age = 0;
cout << "输入年龄不正常" << endl;
return;//退出
}
age = Age;
}
//获取年龄
int getAge() {
return age;
}
};
int main() {
Person p;
p.setName("张三");
cout << "姓名为:" << p.getName() << endl;
p.setAge(10);
cout << "年龄为:" << p.getAge() << endl;
return 0;
}

运行结果:

1
2
姓名为:张三
年龄为:10