C# 虚方法virtual详解

💡 原文中文,约3400字,阅读约需8分钟。
📝

内容提要

C#的虚方法(virtual)允许基类定义一个方法的默认实现,但允许派生类提供自己的实现。使用virtual关键字声明一个方法为虚方法,在派生类中使用override关键字重写基类中的虚方法。调用虚方法时,实际调用的方法取决于对象的运行时类型。可以使用base关键字调用基类的实现。如果不想允许进一步的派生类重写某个方法,可以使用sealed关键字。抽象类可以包含虚方法,但抽象类本身不能被实例化。除了方法,C#还允许属性和索引器是虚的。虚方法是实现多态性的一种方式。

🎯

关键要点

  • C#的virtual关键字用于声明虚方法,允许派生类重写。
  • 在基类中使用virtual关键字声明虚方法。
  • 在派生类中使用override关键字重写基类的虚方法。
  • 调用虚方法时,实际调用的方法取决于对象的运行时类型。
  • 可以使用base关键字调用基类的虚方法实现。
  • sealed关键字用于防止进一步的派生类重写某个方法。
  • 抽象类可以包含虚方法,但不能被实例化。
  • C#允许属性和索引器是虚的。
  • 虚方法是实现多态性的一种方式,允许编写通用代码处理不同类型的对象。

延伸问答

C#中的虚方法是什么?

虚方法是基类定义的可以被派生类重写的方法,使用virtual关键字声明。

如何在派生类中重写基类的虚方法?

在派生类中使用override关键字重写基类的虚方法。

调用虚方法时,实际调用哪个方法?

调用虚方法时,实际调用的方法取决于对象的运行时类型。

如何防止派生类重写某个虚方法?

可以使用sealed关键字来防止进一步的派生类重写某个虚方法。

抽象类可以包含虚方法吗?

是的,抽象类可以包含虚方法,但抽象类本身不能被实例化。

C#中除了方法,哪些元素可以是虚的?

C#还允许属性和索引器是虚的。

🏷️

标签

➡️

继续阅读