虚方法(virtual)、抽象方法(abstract)
简单理解
抽象方法必须在抽象类里,只负责抽象,不能写具体的功能,子类必须实现;
虚方法里可以有功能,子类可以重写,也可以不重写;
形象的说就是
- 抽象方法相当于一个设计规范,里面没内容
- 虚方法。当接手了别人代码,害怕把代码删除后记不清楚业务,这时候把它的方法写成虚方法,然后继承用自己代码实现。当然如果不想改了完全可以去掉自己写的方法,这样代码就会走父类,也不会影响业务执行😄。
虚方法(virtual)
作用:当类中的函数需要在子类中重写时,可以使用虚方法。
示例:
class Person
{
public virtual void XXX()
{
Console.WriteLine("我有一个梦想,那就是动身去往远方!!");
}
}
class Boy : Person
{
public override void XXX()
{
Console.WriteLine("我不想继承父类的虚方法");
}
public void SSS()
{
Console.WriteLine("不学习就不会进步,不仅不就没有出人头地的机会");
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();//实例化的虚方法类
Boy boy = new Boy();//实例化的子类
boy.XXX();//调用了子类的方法
boy.SSS();
Console.ReadLine();
}
}
注意事项
1、当父类中有需要子类重写的方法,则可将该方法标记为virtual。
2、虚方法必须在父类中有实现或者空实现。
3、子类可以选择继承(不重写)父类的功能,也可以选择不继承(重写)。
抽象方法(abstract)
作用:子类继承抽象类,子类必须实现抽象类的抽象方法,因为抽象方法不能有任何实现。
示例:
///抽象类
public abstract class AbsParent
{
///抽象方法
public abstract void AbsTest();
}
public class AbsChild: AbsParent
{
public override void AbsTest()
{
//实现抽象类
//无法使用base.AbsTest()
}
}
注意事项
1、抽象方法不能实现。
2、抽象方法必须放在抽象类中
3、抽象方法不能是私有的
4、抽象类被继承的时候,子类必须实现抽象类里面的所有抽象方法
总结
虚方法实际上是面向对象中多态的体现,不同的对象面对同一事物的不同反应,调用基类的虚方法来执行派生类的具体操作,而基类在调用时,并不需要知道派生类是怎么样实现的。
抽象方法就像他的名字一样,只负责“抽象”,具体实现交给子类来完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~