继承
基类/派生类、virtual/override、sealed 密封、base 调用父类
继承
C# 是单继承语言——一个类只能继承一个基类。但可以实现多个接口。
学完本章你将: 掌握基类/派生类、virtual/override、sealed、base。
基本继承
csharp
public class Animal
{
public string Name { get; set; }
public Animal(string name) => Name = name;
// virtual = 允许子类重写
public virtual string Speak() => $"{Name} 发出叫声";
}
public class Dog : Animal
{
public Dog(string name) : base(name) { } // 调用基类构造
// override = 重写基类方法
public override string Speak() => $"{Name} 汪汪叫!";
public string Fetch() => $"{Name} 去捡球了";
}
var dog = new Dog("旺财");
Console.WriteLine(dog.Speak()); // 旺财 汪汪叫!
sealed —— 禁止继承/重写
csharp
// sealed 类——不能被继承
public sealed class StringHelper { }
// sealed 方法——不能被进一步重写
public class Base
{
public virtual void DoWork() { }
}
public class Derived : Base
{
public sealed override void DoWork() { } // 子类的子类不能重写
}
base 调用父类
csharp
public class TimestampLogger : Logger
{
public override void Log(string msg)
{
base.Log($"[{DateTime.Now}] {msg}"); // 调用父类实现
}
}