virtual 和 override关键字

来源:互联网 发布:01底层数据读取错误率 编辑:程序博客网 时间:2024/05/21 06:56
<span style="font-family:KaiTi_GB2312;font-size:24px;">一:字面理解:</span>
    virtual:adj.实质上的;(计算机)虚拟的,虚像的;
    override:vt.推翻,无视,覆盖,优先于;
    从字面上,我们就可以大概猜测出virtual和override关键字在c#中的作用了,光猜测还是不够,要有所落实。
二:概念比对:
    virtual关键字:
(在基类中使用)用于修饰方法,属性,索引器或事件声明,并且允许在派生类中重写这些对象。
    override关键字:
(在派生类中使用)要扩展或修改继承的方法,属性,索引器或事件的抽象实现或虚实现,必须使用override修饰符。
    对比:我们可以发现,它们两个关键字是相对使用的,方法重写必须要有override关键字,但基类需满足是抽象方法abstract或虚拟方法virtual就行。
三:备注比对:
    virtual:
        1)默认情况下,方法是非虚拟的,不能重写非虚拟方法。
        2)virtual修饰符不能与static,abstract,private,或override修饰符一起使用。
        3)除了声明和调用语法不同外,虚拟方法和抽象方法是一样的。(这里其实可以上网看看虚拟方法和抽象方法比较)
    override:
        1) 不能重写非虚方法或静态方法,重写的基类必须是virtual,abstract。
        2)override修饰符不能用new,static,virtual修饰符来修饰。
四:实例大战:
<span style="font-family:KaiTi_GB2312;">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace JIA{    class Program    {        static void Main(string[] args)        {            Person jia = new student();            jia.Print();        }    }    //创建基类Person    abstract public class Person    {        public virtual void Print()        {            Console.WriteLine("你好");        }      }    //创建派生类student    public class student : Person    {        public  override void  Print()        {            Console.WriteLine("这是学生");            Console.ReadLine();        }    }}</span>

运行结果如下:


    
    

0 0
原创粉丝点击