一、继承:代码复用的艺术
1.1 继承机制的本质
public class Animal // 基类
{
public string Name { get; set; }
public void Eat() => Console.WriteLine($"{Name}正在进食");
}
public class Cat : Animal // 派生类
{
public void Meow() => Console.WriteLine("喵喵叫");
}
// 使用示例
var cat = new Cat { Name = "Tom" };
cat.Eat(); // 继承基类方法
cat.Meow(); // 特有方法
继承的三大特性:
-
层次结构:单继承体系(C#不支持多类继承)
-
成员传递:自动获得基类公共/受保护成员
-
构造链式调用:派生类构造函数必须调用基类构造
public class Vehicle { public Vehicle(int wheels) { /*...*/ } } public class Car : Vehicle { public Car() : base(4) // 必须调用基类构造 { // 初始化逻辑 } }
1.2 继承进阶技巧
▶ 多层继承体系
▶ 密封类与密封方法
public sealed class StringUtils // 禁止继承
{
public virtual void Show() { }
}
public class MyString : StringUtils // 编译错误
二、多态:同一接口的不同实现
2.1 虚方法(Virtual Methods)
public class Shape
{
public virtual void Draw() => Console.WriteLine("绘制基础图形");
}
public class Circle : Shape
{
public override void Draw() => Console.WriteLine("绘制圆形");
}
// 运行时多态
Shape shape = new Circle();
shape.Draw(); // 输出"绘制圆形"
2.2 抽象类(Abstract Class)
public a