11.1 继承基础
基本语法
1 | // 基类 |
11.2 base 关键字
调用基类构造函数
1 | public class Person |
调用基类方法
1 | public class Animal |
11.3 虚方法与重写
virtual 与 override
1 | public class Shape |
多态示例
1 | List<Shape> shapes = new() |
11.4 隐藏基类方法
new 关键字
1 | public class Base |
11.5 sealed 类与方法
密封类
1 | // 不能被继承 |
密封方法
1 | public class Base |
11.6 多态
运行时多态
1 | public class Employee |
11.7 类型检查与转换
is 运算符
1 | Employee emp = new Manager(); |
as 运算符
1 | Employee emp = new Manager(); |
强制转换
1 | Employee emp = new Manager(); |
11.8 继承最佳实践
1. 组合优于继承
1 | // 不推荐 |
2. 使用抽象类定义模板
1 | public abstract class ReportGenerator |
3. 避免深层继承
1 | // 不推荐:继承层级过深 |
11.9 本章小结
- 继承使用
:语法,支持单继承 base调用基类构造函数和方法virtual声明虚方法,override重写new隐藏基类方法sealed防止继承或重写- 多态允许基类引用调用派生类方法
is检查类型,as安全转换- 组合通常优于继承
练习题
- 创建
Vehicle基类,派生Car和Bike - 实现多态:不同形状计算面积
- 使用
base调用基类构造函数 - 以下代码输出什么?
1
2
3
4class A { public virtual void Show() => Console.WriteLine("A"); }
class B : A { public override void Show() => Console.WriteLine("B"); }
A obj = new B();
obj.Show();