C#的继承(Inheritance)是什么?如何创建子类和父类?

继承允许子类获取父类的成员,实现代码重用;C#中通过“:”语法继承,支持单继承和接口多态,使用virtual/override重写方法,并可通过base调用父类构造函数。

继承是面向对象编程中的核心概念之一,在C#中,它允许一个类(子类)获取另一个类(父类)的字段、方法和属性。通过继承,可以实现代码重用,提升程序的可维护性和扩展性。

父类和子类的基本概念

父类(也叫基类)是被其他类继承的类,包含共用的功能或数据。子类(也叫派生类)是从父类继承而来的类,可以在继承的基础上添加新的成员或修改已有行为。

例如:

假设有一个“动物”类,它具有“名字”和“发出声音”的能力。狗和猫都可以看作是动物的一种,因此可以把“狗”和“猫”定义为“动物”的子类。

如何在C#中实现继承

在C#中使用冒号 : 来表示一个类继承自另一个类。

语法示例:

public class Animal
{
   public string Name { get; set; }

   public virtual void MakeSound()
   {
      Console.WriteLine("动物发出声音");
   }
}

public class Dog : Animal
{
   public override void MakeSound()
   {
      Console.WriteLine("汪汪!");
   }
}

在这个例子中:

  • Animal 是父类。
  • Dog 是子类,继承自 Animal。
  • Dog 类继承了 Name 属性,并重写了 MakeSound 方法以提供自己的实现。

关键点说明

virtual 和 override:

  • 父类中想让子类重写的方法应标记为 virtual
  • 子类中使用 override 关键字来提供新的实现。

构造函数的继承:

  • 子类不会自动继承父类的构造函数,但可以通过 : base() 调用父类构造函数。

示例:

public class Animal
{
   public Animal(string name)
   {
      Name = name;
   }
   public string Name { get; set; }
}

public class Dog : Animal
{
   public Dog(string name) : base(name)
   {
      // 调用父类构造函数
   }
}

注意事项

  • C# 不支持多重继承(一个类不能继承多个类),但可以通过接口实现类似功能。
  • 所有类默认继承自 object 类,这是 C# 类体系的根类。
  • 可以使用 protected 成员让子类访问父类的特定字段或方法,但外部类无法访问。

基本上就这些。继承让代码更清晰、更有组织,合理使用能大幅提升开发效率。