虚函数是有代码的并明确允许子类去覆盖,但子类也可不覆盖,就是说可以直接用,不用重写   

    //虚方法,必须声明主体(默认方法体)可重写可不重写。
    public class A 
    { 
        public virtual void a()
        {
            Console.WriteLine("虚函数a");
        }
        public virtual void a1()
        {
            Console.WriteLine("虚函数a1");
        }
    }

 

抽象函数是没有代码,子类继承后一定要重写

    //抽象方法,无主体,必须继承重写

    public abstract class B
    {
        public abstract void b();
    }

继承重写

    public class C:A
    {
        public override void a()
        {
            base.a();
            Console.WriteLine("重写虚函数a");
        }
    }
    public class D:B
    {
        public override void b()
        {
            Console.WriteLine("重写抽象方法b");
        }
    }

主函数调用

           C c=new C();
            D d=new D();
            c.a();
            c.a1();//继承了父类a中的a1()方法;
            d.b();
            Console.ReadLine();

 

posted on 2023-07-28 23:04  阿霖找BUG  阅读(11)  评论(0编辑  收藏  举报