C# abstract和virtual关键字的区别

💡 原文中文,约1000字,阅读约需3分钟。
📝

内容提要

在C#中,abstract用于声明没有实现的方法,必须在派生类中重写;而virtual提供默认实现,可以选择性重写。abstract只能在抽象类中使用,virtual可以在任何类中声明。

🎯

关键要点

  • abstract用于声明没有实现的方法,必须在派生类中重写。
  • abstract方法只能在抽象类中声明,不能使用private、static、sealed或override修饰符。
  • virtual方法提供默认实现,可以选择性重写,且可以在任何类中声明。
  • 虚方法可以使用private、protected、internal、protected internal或public修饰符。
  • 如果派生类不重写虚方法,仍然可以调用默认实现。
  • abstract方法必须在派生类中实现,否则派生类也必须声明为抽象。

延伸问答

C#中的abstract关键字有什么作用?

abstract关键字用于声明没有实现的方法,必须在派生类中重写。

virtual方法和abstract方法有什么区别?

virtual方法提供默认实现,可以选择性重写;而abstract方法没有实现,必须在派生类中重写。

abstract方法可以在哪些地方声明?

abstract方法只能在抽象类中声明,不能使用private、static、sealed或override修饰符。

如果派生类不重写virtual方法会发生什么?

如果派生类不重写virtual方法,仍然可以调用默认实现。

C#中如何定义一个抽象类?

可以使用关键字abstract定义一个抽象类,并在其中声明abstract方法。

virtual方法可以使用哪些访问修饰符?

virtual方法可以使用private、protected、internal、protected internal或public修饰符。

🏷️

标签

➡️

继续阅读