面向对象编程 - Class类与实例 🏗️
概念介绍
还记得我们之前学的type和interface吗?它们定义了数据的"形状",而Class(类)则更进一步,它不仅定义数据的形状,还定义了数据的"行为"!
就像汽车的蓝图不仅描述汽车的样子(颜色、大小),还描述汽车能做什么(启动、加速、刹车)。Class就是这样的"蓝图"!
学习目标
- 理解什么是Class(类)和实例
- 掌握类的定义和构造函数
- 学习方法的定义和调用
- 理解封装的概念和private/public
- 了解类的基本面向对象特性
🏗️ 什么是Class(类)?
生活类比:汽车制造厂
想象一个汽车制造厂:
- Class(类):汽车的设计图纸
- **实例(instance):根据图纸制造的每一辆具体汽车
- **属性(properties):汽车的颜色、品牌、速度
- **方法(methods):汽车能做的事情(启动、加速、刹车)
加载代码编辑器...
🎮 游戏中的Class应用
让我们用Class来重新设计游戏中的球:
加载代码编辑器...
🔐 封装(Encapsulation)
什么是封装?
封装就像是一个保护壳,它隐藏了对象的内部细节,只暴露必要的接口。
public 和 private
加载代码编辑器...
🧬 类的继承
什么是继承?
继承就像孩子继承父母的特征。子类(Child Class)会继承父类(Parent Class)的所有属性和方法,还可以添加自己的特性。
加载代码编辑器...
🎮 游戏中的继承应用
让我们用继承来创建不同类型的游戏角色:
加载代码编辑器...
🔤 Shadow Practice 抄写练习
第一步:理解性抄写
目标: 通过抄写理解Class的概念
加载代码编辑器...
第二步:概念验证练习
目标: 修改类定义,理解类的特性
加载代码编辑器...
第三步:创意扩展练习
目标: 应用Class设计复杂的游戏系统
加载代码编辑器...
💡 多种练习形式
练习1:模仿练习(抄写并理解)
任务: 准确抄写类的定义
加载代码编辑器...
练习2:微调练习(小改动理解概念)
任务: 修改类的定义,理解类的特性
加载代码编辑器...
练习3:创意练习(自由发挥)
任务: 设计自己的Class系统
加载代码编辑器...
练习4:挑战练习(动脑筋解决问题)
任务: 实现复杂的Class功能
加载代码编辑器...
⚠️ 常见错误与解决方法
错误1:this指向错误
症状: 方法中this指向undefined或错误对象
原因: 方法调用时this绑定丢失
加载代码编辑器...
错误2:抽象类实例化错误
症状: 尝试创建抽象类的实例
原因: 抽象类不能直接实例化
加载代码编辑器...
错误3:super()调用错误
症状: super()调用位置错误或参数错误
原因: super()必须在constructor中第一个调用
加载代码编辑器...
错误4:属性初始化顺序
症状: 使用未初始化的属性
原因: 属性在使用前未正确初始化
加载代码编辑器...
🎯 本课重点总结
核心概念回顾
- ✅ Class类设计:构造函数、属性、方法的定义
- ✅ 实例化:通过new关键字创建对象实例
- ✅ 封装:public/private访问控制和数据保护
- ✅ 继承:extends关键字和父类/子类关系
- ✅ 抽象类:abstract类和抽象方法的定义
面向对象特性
- 封装:隐藏内部实现,暴露必要接口
- 继承:代码复用和层次化设计
- 多态:不同对象对同一方法的不同实现
- 抽象:定义通用接口和契约
实践技巧
- 单一职责:每个类只负责一个明确的功能
- 开闭原则:对扩展开放,对修改封闭
- 组合优于继承:优先使用组合而非继承
- 依赖注入:通过构造函数注入依赖
编程思维提升
- 对象思维:用对象建模现实世界概念
- 抽象思维:从具体实例中抽象出通用模式
- 系统思维:设计类之间的协作关系
- 模块化思维:将复杂系统分解为独立的类
🚀 下一步预告
恭喜你掌握了TypeScript的Class类和面向对象编程!现在你可以设计更复杂、更有组织的游戏系统了。下一课我们将学习模块化函数设计,让代码更整洁、更可复用。
第8课:模块化函数 - 让代码更整洁
新功能:
- 将复杂功能分解为独立的函数
- 函数的参数传递和返回值
- 模块化的球管理系统
- 代码复用和维护技巧
新概念:
- 函数的职责分离
- 参数设计和类型安全
- 模块间的依赖关系
- 代码组织和架构设计
预期成果:
完成下一课后,你的游戏代码将更加模块化、易于维护,为后续添加更复杂的功能做好准备!
准备好让你的代码变得更加专业了吗?
📋 扩展挑战(选做)
挑战1:设计模式应用
在实际代码中使用经典设计模式:
- 单例模式:全局唯一的游戏管理器
- 工厂模式:批量创建游戏对象
- 策略模式:可切换的AI行为
- 观察者模式:事件系统和通知机制
挑战2:高级面向对象特性
实现高级的面向对象概念:
- 接口继承:多重继承的模拟
- 泛型类:类型安全的容器类
- 装饰器模式:动态添加功能
- 反射机制:运行时类型检查
挑战3:游戏架构设计
设计完整的游戏架构:
- 实体组件系统:ECS架构模式
- 服务层架构:业务逻辑分离
- 数据持久层:游戏数据的保存和加载
- 网络通信层:多人游戏支持
挑战4:类型安全的状态管理
构建类型安全的状态管理:
- Redux-like状态机:可预测的状态更新
- 状态持久化:游戏状态的保存和恢复
- 状态同步:多组件状态一致性
- 状态验证:运行时状态完整性检查
这些挑战将帮助你深入理解面向对象编程的高级概念,为构建大型、复杂的应用程序做好准备!