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修饰符。
➡️