c#中virtual, abstract和override的区别和用法

virtual是把一个方法声明为虚方法,使派生类可重写此方法,一般建立的方法是不能够重写的,譬如类A中有个方法protected void method(){    原代码....;}类B继承自类A,类B能够调用类A的method()方法,但不能更改方法体代码,但当类A中使用了virtual声明此方法: protected virtual void method(),那么类B可通过使用override重写此方法protected override void method(){    新代码....;}virtual可在基类、抽象类中使用而使用abstract声明的方法,为抽象方法,抽象方法没有代码体,只有一个方法名的声明:protected abstract void method();当使用abstract声明的方法,其派生类必须要重写此方法,如上面一句为抽象类A中声明的,类B继承自抽象类A,那么类B中必须要使用override重写此方法protected override void method(){    新代码....;}但abstract只能在抽象类中使用override就是派生类重写父类方法(包括虚方法、抽象方法,接口方法)时的关键字,反正你要重写方法,就使用override声明
时间: 2024-10-01 02:44:32

c#中virtual, abstract和override的区别和用法的相关文章

Struts2中的ActionContext和ServletActionContext的区别和用法

今天学习Struts2的时候遇到"访问和添加属性"的问题,然后就学到了ActionContext和ServletActionContext之间的区别和用法,然后又在网上搜了下别人的文章大致了解了一下,就想着总结一下. 参考文章1:http://www.cnblogs.com/tanglin_boy/archive/2010/01/18/1650871.html 参考文章2:http://blog.csdn.net/woshixuye/article/details/8172777 相信

.NET中的三种Timer的区别和用法(转)

最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器.所以正好研究研究.这3个定时器分别是:  //1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用.  System.Windows.Forms.Timer  // 2.提供以指定的时间间隔执行方法的机制.无法继承此类.  System.Threading.Timer  //3.在应用程序中生成定期事件.  System.Timers.Timer  这三个定时器位

Python中list,tuple,dict,set的区别和用法

Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定义一个空的List: L = [] Python中的List是有序的,所以要访问List的话显然

.NET中的三种Timer的区别和用法

//1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用. System.Windows.Forms.Timer // 2.提供以指定的时间间隔执行方法的机制.无法继承此类. System.Threading.Timer //3.在应用程序中生成定期事件. System.Timers.Timer 这三个定时器位于不同的命名空间内,上面大概介绍了3个定时器的用途,其中第一个是只能在Windows窗体中使用的控件.在.NET1.1里面,

[转]Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法

Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上 @Html.Partial("ViewName") RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View @{            Html.RenderPartial("V

Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法【转发】

Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上 @Html.Partial("ViewName") RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View @{            Html.RenderPartial("V

小胖说事28------iOS中extern,static和const区别和用法

通俗的讲: extern字段使用的时候,声明的变量为全局变量,都可以调用,也有这样一种比较狭义的说法:extern可以扩展一个类中的变量到另一个类中: static声明的变量是静态变量,变量值改变过之后,保存这次改变,每次使用的时候都要读取一遍值: const声明过得变量值是不可改变的,是readonly的属性,不可以改变变量的值. 具体用法: 1.static的用法:static NSString *str = @"哈哈"; 2.const的用法:NSString *const st

Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法

Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上 @Html.Partial("ViewName") RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View @{            Html.RenderPartial("V

Java泛型中<T> T 与 T的区别和用法

<T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T> T 和T的两种方法实现 一.<T> T 用法 二.T用法 原文地址:https://blog.51cto.com/3573186/2424310