虚方法(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、抽象类被继承的时候,子类必须实现抽象类里面的所有抽象方法

总结

虚方法实际上是面向对象中多态的体现,不同的对象面对同一事物的不同反应,调用基类的虚方法来执行派生类的具体操作,而基类在调用时,并不需要知道派生类是怎么样实现的。
抽象方法就像他的名字一样,只负责“抽象”,具体实现交给子类来完成。

posted @   Smileher  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示