GESP6级C++考试语法知识(八、全面掌握面向对象(三))
2026/5/14 3:53:21 网站建设 项目流程


第三课《封装护盾》

—— 为什么对象不能让别人乱碰?


🌟本课学习目标

学完这一课,同学们将能够:

✅ 理解什么是“封装”
✅ 理解为什么数据不能乱改
✅ 掌握:

public private

✅ 学会“保护对象”
✅ 学会 getter / setter
✅ 开始建立“安全对象”的思想
✅ 能举一反三设计安全类


🌍 第一章:对象王国发生大危机!

1、在上一节课。

(1)我们已经进一步会制造对象了!

比如:

Hero hero1;

(2)hero1 是一位勇士。

它有:

名字 血量 攻击力

(3)本来一切正常。

结果有一天!

有个程序员误写了:

hero1.hp = -999999;

(4)整个游戏世界瞬间崩塌!


💥 勇士血量变成负数!


(5)勇士:

“我已经死到地下十八层了吗?!”

(6)另一个程序员写下了:

hero1.atk = 99999999;

(7)结果:

🌋 一刀砍爆宇宙!


(8)对象王国的国王吓坏了:


🌟“不能让别人随便乱改对象的数据!”🌟


🛡️ 第二章:封装护盾出现了!

1、“封装法师”出现了。

他说:


🌟“对象应该保护自己!”🌟


2、于是。

他采用了:

⚔️封装护盾⚔️


3、🌟封装是什么?

一句话:


🌟“把重要数据藏起来,不让别人乱改。”🌟


4、就像:


🏦 银行金库

金库里的钱:

❌ 不能随便拿
❌ 不能随便改

必须:

✅ 通过管理员
✅ 通过规则


对象也是一样!


🧠 第三章:public 和 private

1、在 class 世界里。

有两个超级重要区域:


2、🌟public(公共区域)

表示:

“外面的人可以直接访问”

例如:

hero.name

3、🌟private(秘密区域)

表示:

“外面的人禁止直接访问”

🏰 第四章:第一次使用 private!


1、🌟危险版本(没有保护)

class Hero { public: string name; int hp; };

别人可以:

hero.hp = -100000;

世界爆炸。


2、🌟安全版本(封装护盾)

#include <iostream> using namespace std; class Hero { public: string name; private: int hp; }; int main() { Hero hero1; hero1.name = "小勇士"; // hero1.hp = 100; }

3、🌟现在会发生什么?

如果写:

hero1.hp = 100;

编译器会报错!


4、🌟因为:

hp 被 private 护盾保护起来了!

🧠 第五章:可是问题来了!

1、同学们马上会问:


❓“那 hp 永远不能修改了吗?”


2、当然不是!

否则勇士:

  • 怎么回血?

  • 怎么受伤?


3、所以:

封装法师说:


🌟“可以改,但必须按规则改!”🌟


4、于是:

getter / setter 登场!


🛠️ 第六章:setter —— 安全修改数据


1、🌟安全设置血量

#include <iostream> using namespace std; class Hero { public: string name; void setHp(int h) { if(h >= 0) { hp = h; } } private: int hp; }; int main() { Hero hero1; hero1.name = "小勇士"; hero1.setHp(100); }

2、🌟重点理解

以前:

❌ 谁都能直接改 hp

现在:

✅ 必须通过:

setHp()

3、🌟setHp 就像“保安”!

它会检查:

if(h >= 0)

4、🌟只有合法血量才能进入!


5、❌ 非法情况

hero1.setHp(-999);

不会成功!


6、🌟世界安全了!


📦 第七章:getter —— 安全读取数据

1、现在。

hp 被 private 保护。

外面不能直接看。

怎么办?


2、🌟使用 getter!

int getHp() { return hp; }

3、🌟完整代码

#include <iostream> using namespace std; class Hero { public: string name; void setHp(int h) { if(h >= 0) { hp = h; } } int getHp() { return hp; } private: int hp; }; int main() { Hero hero1; hero1.name = "小勇士"; hero1.setHp(100); cout << hero1.getHp() << endl; }

4、🌟运行结果

100

🧠 第八章:真正理解 getter/setter

很多同学这里会迷糊。

所以一定要用现实例子。


🏦 银行例子


1、🌟private 金库

别人:

❌ 不能直接碰钱


2、🌟setter

像:

💳 存钱窗口

会检查:

  • 金额是否合法

  • 有没有问题


3、🌟getter

像:

📋 查询余额窗口

只能查看。


4、🌟封装真正意义

不是:

“故意麻烦”

而是:

🌟“保护对象安全”!


⚔️ 第九章:对象终于像“真正角色”了!

1、以前:

hero.hp = -999999;

谁都能乱改。


2、现在:

对象会保护自己!


3、🌟这也是:

面向对象的重要思想!


4、对象不是:

“变量盒子”

而是:

“有规则的角色”

🧠 第十章:最容易犯的错误!


❌ 错误1:private 后直接访问

hero.hp = 100;

会报错。

因为:

hp

已经藏起来了。


❌ 错误2:忘记 public

如果:

setHp()

写在 private 下面。

外面也不能调用。


🌟记住:

给别人用的函数 一般放 public

❌ 错误3:setter 不做检查

错误写法:

void setHp(int h) { hp = h; }

这样还是不安全。


🌟setter 的真正意义:

“检查合法性”


🏆 第十一章:闯关练习


🎮 第一关:Bank 类

要求:

private: money public: setMoney() getMoney()

要求:

❌ 钱不能是负数


🎮 第二关:Student 类

要求:

姓名 成绩

要求:

❌ 分数不能小于0
❌ 分数不能大于100


🎮 第三关:Pokemon 类

要求:

名字 等级 血量

要求:

❌ 血量不能负数


👑 Boss挑战(真正举一反三)

请同学们自己设计:


🌟一个“安全对象”🌟

例如:

  • 游戏角色

  • 汽车

  • 飞机

  • 手机

  • 银行卡


并思考:


🌟哪些数据不能乱改?

例如:

余额 速度 生命值 等级

然后:

🌟使用 private 保护它!


🌟这一关很重要!

因为:

孩子开始真正理解:

“为什么需要封装”

而不是死记语法。


📚 第十二章:本课总结


1、🌟什么是封装?

🌟“把重要数据保护起来。”🌟


2、🌟为什么需要 private?

因为:

对象不能让别人乱改

3、🌟getter/setter 是什么?

getter:

安全读取

setter:

安全修改

4、🌟今天真正学会的不是语法。

而是:

🌟“对象应该保护自己。”🌟


🚀 下一课预告

下一节课:

⚔️《对象会自己做事》⚔️

孩子将真正学会:

✅ 成员函数
✅ 对象行为
✅ 对象自己行动
✅ this 思想(弱化版)
✅ 构造函数初步
✅ “活的对象”真正诞生


🌟最后一句送给同学们

🌟“真正强大的对象,不只是保存数据。”

“它还会保护自己。”

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询