首页/ 第 5 章 · C# 编程基础/ 第 66 课
LESSON 66 · C# 编程基础

继承 Inheritance

继承已掌握。下一课学多态与虚方法。

⏱ 约 15 分钟📊 难度:入门🗂 第 5 章 · C# 编程基础📍 第 66 / 300 课
课程进度
66 / 300

🎯本节学习目标

  • 理解继承的概念
  • 掌握子类定义
  • 掌握 base 关键字

🚀课程导读

“敌人”和“Boss”有很多共同点,没必要写两遍。继承让子类“继承”父类的一切,还能增加自己的特色。

继承的概念

“子承父业”。

  1. 继承:子类自动拥有父类的字段、方法、属性。
  2. 语法:class 子类 : 父类 { 自己的内容 }
  3. 例:class Animal { public void Eat() { ... } } class Dog : Animal { public void Bark() { ... } }
  4. Dog 对象既能调用 Eat(继承自 Animal),也能调用 Bark(自己的)。
  5. 继承表达“is-a”关系:狗“是一种”动物。
  6. 【单继承】C# 一个类只能有一个父类(但可实现多个接口,第 68 课)。
  7. 父类也叫基类(Base),子类也叫派生类(Derived)。
  8. 所有类最终都继承自 object。
💡
继承是“复用 + 扩展”:把公共逻辑放父类,差异化放子类。

Unity 继承实战

用继承管理不同敌人。

  1. 创建脚本 Enemy(不继承 MonoBehaviour,作为数据基类):
  2. public class Enemy { public string name = "敌人"; public int hp = 100; public void TakeDamage(int dmg) { hp -= dmg; } public virtual void ShowInfo() { Debug.Log(name + " HP:" + hp); } }
  3. 创建脚本 Boss : Enemy:
  4. public class Boss : Enemy { public Boss() { name = "Boss"; hp = 500; } public override void ShowInfo() { Debug.Log("BOSS! " + name + " HP:" + hp); } }
  5. 创建测试脚本继承 MonoBehaviour,在 Start 里:
  6. Enemy e = new Enemy(); Boss b = new Boss();
  7. e.TakeDamage(10); b.TakeDamage(100);
  8. e.ShowInfo(); b.ShowInfo(); // 各自输出
  9. 播放:Boss 类继承并覆盖了父类行为。
  10. 【virtual + override】父类方法标 virtual 才能被子类 override 重写(第 67 课细讲)。
⚠️
子类看不到父类的 private 成员;用 protected 让子类可访问(第 65 课)。

常见错误与排查

错误:override 报错:没有可重写的方法?
原因:父类方法没标 virtual
解决:在父类方法前加 virtual 关键字。

动手练习

课后小任务(做出来才算真的学会)

  • 定义 Animal 基类与 Dog、Cat 子类
  • 让子类继承父类方法并添加自己的方法
  • 用 protected 字段让子类可以访问

本节小结

继承已掌握。下一课学多态与虚方法。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课封装:public/private 与属性