- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
轻松学习的有效方法
一、静态方法和实例方法
静态方法是一个特殊的成员方法不属于类的某一个具体的实例或对象而属于类本身静态方法不对特定实例进行操作只能访问类中的静态成员访问静态方法只能使用类名而不需要创建对象也不能使用对象名类引用声明静态方法修饰符中必须有static关键字
实例方法可以使用类的任何成员调用实例方法时必须使用类的实例或对象来引用实例方法对类的某个给定的实例进行操作在实例方法类中可以使用this来访问实例调用实例方法时必须先创建一个对象
简单的说静态方法只能访问静态成员实例方法可以访问静态和实例成员之所以不允许静态方法访问实例成员变量是因为实例成员变量是属于某个对象的而静态方法在执行时并不一定存在对象同样因为实例方法可以访问实例成员变量如果允许静态方法调用实例方法将间接地允许静态方法使用实例成员变量这是错误的基于同样的道理静态方法中不能使用关键字this
例一、编程使用静态方法和实例方法
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceText{classA{intexaVar;//创建的一个为实例成员变量staticintstVar;//创建的一个静态成员变量voidtM()//实例方法{exaVar=1;//等价于this.exVar=1stVar=1;//等价于A.stVar=1}staticvoidsM()//静态方法{//exaVar=1;//错误静态方法不可以调用实例成员变量stVar=1;//等价于A.stVar=1}staticvoidMain(string[]args){Atext=newA();//创建类A的对象为texttext.exaVar=1;//对象text访问实例成员变量A.stVar=1;//只能使用类访问静态成员变量//text.stVar=1;//不能使用对象text访问静态成员变量text.tM();//使用对象text访问实例成员方法//text.sM();//不能使用对象text访问静态成员方法A.sM();//使用类访问静态成员方法Console.WriteLine(text.exaVar+A.stVar);Console.ReadLine();}}}
输出的结果为:2
二、虚方法和非虚方法
若一个实例方法的声明中含有virtual修饰符则称该方法为虚方法若其中没有virtual修饰符则称该方法为非虚方法
非虚方法的实现是一成不变的无论该方法是在声明它的类的实例上调用还是在派生类的实例上调用实现均相同与此相反虚方法的实现可以由派生类取代取代所继承的虚方法的实现的过程称为重写该方法在虚方法调用中该调用所涉及的那个实例运行时类型确定了要被调用的究竟是该方法的一种实现在非虚方法调用中相关的实例的编译时类型是决定性因素
例二、使用虚方法和非虚方法在派生类中调用
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceText{publicclassA{publicvirtualvoidab()//定义的类A的虚方法[csharp]viewplaincopyprint?{Console.WriteLine(这是虚方法);}publicvoidac()//定义的类A的非虚方法{Console.WriteLine(这是非虚方法);}}publicclassB:A//类B私有继承类A{publicoverridevoidab()//重写继承的ab方法{Console.WriteLine(这是新的方法);}publicnewvoidac()//创建一个新的方法覆盖原来的ac方法{Console.WriteLine(这是另一个新的方法);}}classProgram{staticvoidMain(string[]args){Bb=newB();//创建类B的对象bAa=b;//将对象b赋值给类A的对象aa.ab();//调用原ab虚方法b.ab();//调用ab方法a.ac();//调用原ac非虚方法b.ac();//调用ac方法Console.ReadLine();}}}
从输出的结果中可以看出虚方法的实现是由派生类取代并且由它的方法实现而非虚方法的实现是定义的类和派生类的各自由它们的方
您可能关注的文档
最近下载
- 水泥厂余热锅炉调试报告.pdf VIP
- 2024-2025年中国铁氧体软磁材料行业市场调查研究及投资前景预测报告.docx
- 2025秋统编版(2024)小学道德与法治三年级上册(全册)课时练习及答案(附目录).docx
- 我眼中的中国平安.docx VIP
- 公路工程沥青新旧试验规程差异对比解读-JTG 3410-2025.pdf VIP
- 《气体传感器简介》课件.pptx VIP
- 自治区矿产资源开发利用与生态保护修复方案编制提纲(试行).doc VIP
- 粘贴钢板加固施工方案.docx VIP
- 碳排放权交易有关会计处理暂行规定(2025).docx VIP
- Fisher阀门结构与维护.ppt VIP
文档评论(0)