了解多态行为的原则

已完成

多态性允许将不同类型的对象视为通用基类型的对象。 此行为使你能够编写用于多个类型的对象的代码,而无需在编译时知道特定类型。

例如,假设一个基类 Shape 和派生类 CircleRectangle。 可以创建 Shape 对象的列表,并向其添加 CircleRectangle 的实例。 循环访问列表时,可以在每个对象上调用 Draw 方法,而无需知道该对象的特定类型。 此过程是实践中多态行为的一个例子。

C# 中的多态性方法

C# 开发人员可以使用以下任一方法实现多态性:

  • 基于继承的多态性:C# 中的类继承使派生类能够从基类继承成员。 可以在派生类中替代基类的成员以提供特定的实现。 创建引用派生类类型的基类的实例时,可以从基类对象访问派生类的成员。 基于继承的多态性是在 C# 中实现多态的一种常见方法。

  • 基于接口的多态性:C# 中的接口定义类可以实现的协定。 当类实现接口时,该类会收到一组实现所需的属性和方法。 此要求允许多态行为,其中接口引用可以将不同类的对象定向到实现属性和方法集。 基于接口的多态性是实现 C# 中的多态性的另一种常见方法。

方法重载与方法替代

方法重载和方法替代是实现产生不同行为的方法调用的两种常见方法。 下面是两种技术的比较:

  • 方法重载:方法重载允许使用同一名称但同一类中的不同参数定义多个方法。 要调用的方法在编译时根据方法签名确定。 方法重载通常称为编译时多态性。

  • 方法替代:方法替代允许派生类提供在其基类中已定义的方法的特定实现。 要调用的方法根据对象的实际类型在运行时确定。 方法替代是运行时多态性的示例。

此训练侧重于方法替代,这是 C# 中多态性的关键方面。

C# 中的多态性原则

多态性基于以下原则:

  • 方法重写:方法重写允许派生类提供在其基类中已定义的方法的特定实现。 此功能可通过继承实现,是运行时多态性的关键方面。
  • 虚拟和抽象方法:虚拟关键字用于声明可在派生类中替代的基类中的方法。 抽象关键字用于声明必须在派生类中替代的方法。
  • 基类引用:多态性允许基类引用指向派生类的对象。 此继承机制允许通过基类引用调用派生类中替代的方法。
  • 基于接口的多态性:接口定义类可以实现的协定。 此协定允许通过通用接口统一处理不同的类,促进松散耦合和灵活性。

多态性的优点

  • 代码可重用性:多态性通过允许同一代码处理不同类型的对象来提升代码可重用性。

  • 灵活性和可维护性:多态性通过将使用对象的代码与定义对象的代码分离来增强灵活性和可维护性。

  • 扩展性:多态性通过添加实现同一接口或从同一基类继承的新类,可以更轻松地扩展系统。

摘要

多态性是面向对象的编程中的关键概念,可实现代码中的灵活性、可重用性和可维护性。 通过了解多态性原则及其在 C# 中的实现,可以创建更易于维护和演变的模块化可扩展应用程序。