ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:86.50KB ,
资源ID:8657632      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8657632.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(new、abstract、virtual、override,sealed关键字区别和使用代码示例.doc)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

new、abstract、virtual、override,sealed关键字区别和使用代码示例.doc

1、new、abstract、virtual、override,sealed关键字区别和使用代码示例 本文是整理牛人精华贴所得,非100%原创   new 与 override的区别  引用AnyTao博客中的一句话: 覆写(override)与重载(overload),是成就.NET面向对象多态特性的基本技术之一 正如某网友说的那一句话: Override 覆写 就是把原来的换掉了 new        新的 就是两个共存着 使用override重写xx方法,通过父类引用一样只能看到重写后的方法; 如果使用new隐藏xx方法,父类子类引用各自对应方法; overri

2、de重写虚方法,那么就只剩下重写以后的方法; new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;     使用override修饰符主要用来修改方法、属性、索引器或事件。重写基方法必须与重写方法具有相同的名称。         不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。        重写声明不能更改虚方法的可访问性。重写方法和虚方法必须具有相同的访问级修饰符。例如:虚方法为public的,重新方法也必须是public的。         不能使用下列修饰符修改重写方法:         new        static    

3、    virtual        abstract         重写属性声明必须指写与继承属性完全相同的访问修饰符、类型和名称,并且重写属性必须是虚拟的、抽象的或是重写的。 要求:(三相同) 1、方法名称相同 2、参数列表相同 3、返回值类型相同 一句话,只需要重新写方法内部的内容! ,override可以覆盖基类的方法,让基类的方法以子类的内容实现,而new不用来覆盖基类的方法,而是全新定义一个子类的方法,这个方法只属于子类,与基类的方法无关,只是名字上相同而已   先看abstract和override使用方法 abstract class Base

4、     {         public virtual void work()         {             MessageBox.Show("基类--开始工作");         }         public virtual void outwork()         {             MessageBox.Show("基类--下班");         }                  Public abstract void Pay();       //声明抽象方法,必须要被子类new 或 override;只有当类是abs

5、tract时才可以声明abstract方法         }     class Employee : Base     {         public new void work()         {             MessageBox.Show("子类(new)--开始工作");         }         public override void outwork()   //覆写抽象方法(一定要在子类覆写父类的抽象方法)         {             MessageBox.Show("子类(override)下班");    

6、     } }                //测试代码          Code           //第一种情况             Employee emp = new Employee();             emp.work();              //子类(new)--开始工作             emp.outwork();          //子类(override)下班                  //第二种情况             Employee emp = new Employee();

7、            Base b = (Base)emp;   //指向抽象类了             b.work();                //基类--开始工作             b.outwork();             //子类(override)下班   被子类覆写了,所以不是显示基类下班             //第三种情况             Base b = new Employee();             //同上面是一样的             b.work();                //基

8、类--开始工作             b.outwork();             //子类(override)下班             Console.ReadLine();     new声明的方法,当使用子类的类型来调用的时候,它会运行子类中的函数,而如果类型是基类的话,被隐藏的基类函数就会站到前台来。只有使用virtual定义基类中的函数,并使用override标记子类中的函数,才可以达到想要的多态类(始终调用子类的方法)。 在子类中new父类中的方法,父类中的方法不一定是虚类型,即virtual 但是在子类中override父类中的方法,父类的方法

9、一定得是虚类型,   代码示例:     abstract class Animal     {         public abstract void Drink();         public abstract void GotoBed();     }     class Dog : Animal     {         public override void Drink()         {             MessageBox.Show("小狗喝水");         }         public override void G

10、otoBed()         {             MessageBox.Show("小狗睡觉");         }         public override string ToString()   //也可:public new string ToString()         {             return "小狗";         }     } 总结: 1、                抽象方法,必须要被子override;只有当类是abstract时才可以声明abstract方法   2、                因为a

11、bstract方法没有方法实现,其子类只能对其abstract方法进行override,不能new(如果可以new的话,那么类的类型是父类的话,类的方法执行的是父类的方法而非子类的方法,而父类的方法却没有方法实现,那么将如何执行呢?) 3、     Selaed 方法必须与override连用,也就是说实现sealed方法的类的父类必须实现了此方法(sealed关键字有两个作用:1,密封类不能被继承。2:密封方法重写基类中的方法,但其本身不能在任何派生类中进一步重写,Selaed 方法必须与override连用)     如下,A声明了virtual方法A1,那么A的子类AA才能对Pay进

12、行密封重写,AA的子类不能对A1重写或覆盖。 sealed方法的使用代码示例:     class A     {         public virtual void A1()         {             MessageBox.Show("A---A1");            }     }     class AA:A     {         public sealed override void A1()         {             MessageBox.Show("AA---A1");         }     

13、        } 总结: Public abstract void pay();                 abstract方法没有方法实现,必须继承 Public sealed override void pay(){}      sealed方法必须是重写父类的方法 Public static void pay(){}                   static方法通过类名访问 Public virtual void pay(){}                  virtual方法子类可以对其override或new Public new void pay

14、){}                     父类的方法pay不一定是virtual Public override void pay(){}                父类的方法pay一定要是virtual   new、abstract、virtual、override关键字的使用代码示例   public abstract class People   //abstract 说明类People是一个抽象类,不能被实例的     {         public People()         {         }         public void 

15、Work()         {             MessageBox.Show("开始工作!");         }         public virtual void GetOffWork()   //虚函数,说明此方法可以被子类覆盖(override)         {             MessageBox.Show("下班啦!");         }      }      public class Manage:People   //继承Popele类     {         public Manage()        

16、 {         }          new public void Work()   //因为基类已经实现了Work方法,而在子类中又实现了Work方法,                                         //所以编译器会报警,在前面加上 new(隐藏基类方法),是将警报关闭。         {             base.Work();   //调用基类Popele的方法。显示“开始工作”             //MessageBox.Show("管理员开始工作罗!");         }          publi

17、c override void GetOffWork()      //覆盖基类的方法         {             MessageBox.Show("管理员下班啦");         }      }     public class Employee:People     {        public Employee()        {}         new public void GetOffWork()      //virtual方法仍然可以 new,abstract方法不能用new         {             

18、MessageBox.Show("职员下班啦!");         }      } 以上应该应该几点: 1、如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。 2、如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。 3、如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过! 3、调用父类方法:base.方法名() 4、abstract类是一个抽象类,不能被实例化   0 0 0 (请您对文章做出评价) sealed有

19、点类似JAVA中的final关键字 被sealed修饰的类不能作为父类被继承 namespace sealedTest { public sealed class Base { } public class Child:Base //wrong {} } 被sealed修饰的方法不能被重写 没有sealed关键字的情况 using System; namespace sealedTest { //父类 public class Base { p

20、ublic virtual void display() { Console.WriteLine("1111111"); } } //子类 public class Child:Base { public override void display() //没有sealed关键字的情况 { Console.WriteLine("2222222"); } } //孙类

21、 public class Grandchild:Child { public override void display() { Console.WriteLine("3333333"); } } //测试类 class Test { [STAThread] static void Main(string[] args) { Base b=new Base();

22、 b.display(); b=new Child(); b.display(); b=new Grandchild(); b.display(); } } } 有sealed关键字的情况 using System; namespace sealedTest { //父类 public class Base { public virtual void display()

23、 { Console.WriteLine("1111111"); } } //子类 public class Child:Base { public sealed override void display() //有sealed关键字的情况 { Console.WriteLine("2222222"); } } //孙类 public class Grandchild:Chi

24、ld { //“sealedTest.Grandchild.display()”:无法重写继承的成员“sealedTest.Child.display()”,因为它已被密封 public override void display() { Console.WriteLine("3333333"); } } //测试类 class Test { [STAThread] static void Main(st

25、ring[] args) { Base b=new Base(); b.display(); b=new Child(); b.display(); b=new Grandchild(); b.display(); } } } 本文来自CSDN博客,转载请标明出处: 您当前位置:站长天空 -> 认证考试-> Cisco认证 关于C#中虚方法重载的说明-.NET教程

26、C#语言 作者:网友供稿 点击:338 推荐 西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金 站内搜索 窗体顶端 窗体底端 文章页数:[1]  在c#中,进行虚方法的重载有些体会,现与大家分享。 首先请大家看看下面的例子, using system; abstra

27、ct public class contact { public virtual string prinf() { return ("这是虚方法"); } } public class class1:contact { public string prinf() { return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法 } } 想要通过编译,只需将prinf的声明改为 public override string prinf() 或 public new string p

28、rinf() 但是这两种声明方式是有区别的, 请看下面的例子: using system; abstract public class contact { public virtual string prinf() { return ("这是虚方法"); } } public class class1:contact { public override string prinf() { return ("这是新的方法"); } } public class class2:contact { public n

29、ew string prinf() { return ("这是另一个新的方法"); } } public class text { public static void main() { contact [] contacts=new contact [2]; contacts[0]=new class1; contacts[1]=new class2; foreach(contact ct in contacts) { console.writeline(ct.printf); } } } 最后我们看到的结果是 这是新的方法 这是虚方法 而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法! 这就是两者的区别!!! 文章整理:站长天空 网址: 以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! 文章页数:[1] 

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服