首页 > 代码库 > 9 abstract 和 Virtual 之间的区别

9 abstract 和 Virtual 之间的区别


(1) abstract方法没有具体的实现,同时必须被覆写

(2) 虚(Virtual)方法可以没有具体的实现,也不一定必须覆写(虚方法定义时,可以没有具体的实现代码,但是必须创建方法体:即必须有方法的左右花括号)。

(3) 抽象方法不可以使用base.method()方式调用,但是虚方法是可以的


//定义一个抽象方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    abstract class absClass
    {
        public abstract void DisplayValue(string value);
    }
}

//在抽象类的子类中覆写抽象方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    class absClassInherited : absClass
    {
        override public void DisplayValue(string value)
        {
            Console.WriteLine(value);
        }
    }
}

//定义一个虚方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    class virtClass
    {
        public virtual void DisplayValue(string value)
        {
            Console.WriteLine(value);
        }
    }
}

//在子类中覆写虚方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    class virtClassInherited : virtClass
    {
        public override void DisplayValue(string value)
        {
            Console.WriteLine(value.ToUpper());
        }
    }
}