版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#
中高级OOP概念第五章C#中的高级OOP概念第1页回顾第四章-实现C#中高级OOP概念带参数结构函数是指接收参数结构函数。在
C#中,析构函数由垃圾回收器调用。在C#中允许方法重载在C#中允许操作符重载C#不支持多重继续要重写基类现有方法,需要在继承类中申明一个同名新方法,并在方法名称前附加new关键字
2C#中的高级OOP概念第2页目标讨论多态性使用虚函数讨论抽象基类讨论接口概念使用接口3C#中的高级OOP概念第3页C#中多态性6-1多态性和虚函数关系非常亲密多态性允许在运行时实现派生类方法需要从基类对象调用派生类方法时,能够使用虚函数publicclassShapeObj
{
publicvirtualvoidarea()
{
System.Console.WriteLine("这是一个虚Area方法");
}
}4C#中的高级OOP概念第4页C#中多态性6-25C#中的高级OOP概念第5页C#中多态性6-3publicclassCircle:ShapeObj
{publicoverridevoidarea()
{
System.Console.WriteLine("这是CircleArea()方法");
}
}
publicclassRectangle:ShapeObj
{
publicoverridevoidarea()
{
System.Console.WriteLine("这是RectangleArea()方法");
}
}publicclassSquare:ShapeObj
{
publicoverridevoidarea()
{
System.Console.WriteLine("这是SquareArea()方法");
}
}定义了三个类(Rectangle、Circle和Square)。这些类是从ShapeObj类派生,而且重写了ShapeObj类area()方法。override关键字用于重写基类函数area()。6C#中的高级OOP概念第6页C#中多态性6-4publicclassPolymorphismExp
{
publicstaticvoidmain()
{
ShapeObj[]objArray=newShapeObj[4];
objArray[0]=newShapeObj();
objArray[1]=newRectangle(); objArray[2]=newCircle(); objArray[3]=newSquare();
foreach(ShapeObjiterateArrayinobjArray)
{
iterateArray.area();
}
}
}每个派生自ShapeObj类area()方法都被调用
7C#中的高级OOP概念第7页C#中多态性6-5classSecondExp{publicintfirstMethod(){return(secondMethod()*thirdMethod());}publicvirtualintsecondMethod(){ return(10);}publicintthirdMethod(){ return(20);}}classDerivedClass:SecondExp{publicoverrideintsecondMethod(){ return(30);}}classTest{Publicstaticvoidmain(){ DerivedClassobjDerived=newDerivedClass(); System.Console.WriteLine(objDerived.firstMethod());}}在DerivedClass中重写基类中虚函数secondMethod()8C#中的高级OOP概念第8页C#中多态性6-6多态性是智能重写多态性-在运行时决定调用哪个方法多态性需要虚函数,而虚函数则需要进行方法重写9C#中的高级OOP概念第9页抽象基类2-1抽象基类是能够被继承类不能创建抽象类对象C#允许在类定义中添加abstract修饰符来创建抽象基类。10C#中的高级OOP概念第10页抽象基类2-2usingSystem;abstractclassBaseClass{publicabstractvoidabstractFunc();publicvoidnonAbstractFunc(){Console.WriteLine("这是nonAbractFunc()方法!");}}classDerivedClass:BaseClass{publicoverridevoidabstractFunc(){Console.WriteLine("这是abstractFunc()方法!");}}classTest{staticvoidmain(){DerivedClassobjDerived=newDerivedClass();BaseClassobjBase=objDerived;objBase.abstractFunc();objDerived.nonAbstractFunc();}}在派生类DerivedClass中重写抽象基类抽象方法abstractFunc()11C#中的高级OOP概念第11页接口4-1接口是纯抽象基类它只能包含抽象方法,而不能包含任何方法实现实现特定接口类必须实现该接口列出组员publicinterfaceIFile{intdelFile();voiddisFile();}12C#中的高级OOP概念第12页接口4-2publicclassMyFile:IFile{publicintdelFile(){ System.Console.WriteLine("DelFile实现!"); return0;}publicvoiddisFile(){ System.Console.WriteLine("DisFile实现!");}}classTest{staticvoidmain(){ MyFileobjMyFile=newMyFile(); objMyFile.disFile(); intretValue=objMyFile.delFile();}}类MyFile继承了接口IFile并实现了接口中定义方法delFile()和disFile()13C#中的高级OOP概念第13页接口4-3定义一个类:publicclassBaseforInterface{publicvoidopen(){ System.Console.WriteLine("这是BaseforInterfaceopen方法");}}14C#中的高级OOP概念第14页接口4-4publicclassMyFile:BaseforInterface,IFile{publicintdelFile(){ System.Console.WriteLine("DelFile实现!"); return0;}publicvoiddisFile(){ System.Console.WriteLine("DisFile实现!");}}classTest{staticvoidmain(){ MyFileobjMyFile=newMyFile(); objMyFile.disFile(); intretValue=objMyFile.delFile(); objMyFile.open();}}定义一个继承类BaseforInterface和接口Ifile新类MyFile示例输出以下列图:15C#中的高级OOP概念第15页多接口2-1C#允许多接口实现
定义一个接口,仅包含一个方法publicinterfaceIFileTwo{ voidapplySecondInterface();}16C#中的高级OOP概念第16页多接口2-2publicclassMyFile:BaseforInterface,IFile,IFileTwo{publicintdelFile(){System.Console.WriteLine("DelFile实现!");return0;publicvoiddisFile(){System.Console.WriteLine("DisFile实现!");}publicvoidapplySecondInterface(){System.Console.WriteLine("ApplySecondInterface实现!");}}classTest{staticvoidmain(){MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();objMyFile.open();objMyFile.applySecondInterface();}}本示例实现多接口继承,与前面代码合并后输出结果以下:17C#中的高级OOP概念第17页显式接口当两个接口中含有同名方法时,能够使用显式接口实现publicinterfaceIFile{intdelFile();voiddisFile();}publicinterfaceIFileTwo{voidapplySecondInterface();voiddisFile();}publicclassMyFile:BaseforInterface,IFile,IFileTwo{...voidIFile.disFile(){System.Console.WriteLine("DisFileIFile实现");voidIFileTwo.disFile(){System.Console.WriteLine("DisFileIFileTwo实现");}...}18C#中的高级OOP概念第18页接口继承能够经过将多个接口组合到一起来创建新接口interfaceIAllFile:IFile,IFileTwo{//假如需要,除了IFile和IFileTwo操作之外,//还能够添加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湘盛专修高职学院高职单招职业技能考试模拟试卷含完整答案详解(考点梳理)
- 2025年巴山生态学院高职单招职业适应性测试考试题库附答案详解(黄金题型)
- 2025年澧水数字职业学院高职单招职业技能考试题库含答案详解AB卷
- 2027年四川航天技师学院高职单招职业技能考试模拟试卷及参考答案详解【轻巧夺冠】
- 2025年绵阳现代农业职业学院高职单招职业技能考试模拟试卷附完整答案详解(名师系列)
- 2026年阳泉职业技术学院高职单招职业技能考试题库及完整答案详解(夺冠)
- 2025年黑江盛达职业学院单招职业技能考试题库及答案详解(全优)
- 2024年河北渤海产业职业学院高职单招职业适应性测试考试模拟试卷含完整答案详解【夺冠】
- 2025年甘肃省金昌市高职单招职业技能考试题库含完整答案详解(考点梳理)
- 2024年山东涧头职业学院高职单招职业技能考试题库及完整答案详解(必刷)
- 中医康复治疗技术试题(附参考答案)
- 初高中物理衔接教材
- 消防紧急疏散应急预案
- 2025年中考英语总复习:完形填空 刷题练习题汇编(含答案解析)
- DL∕T 659-2016 火力发电厂分散控制系统验收测试规程
- DZT 0453.2-2023 铌钽矿石化学分析方法 第2部分:锂、铷、铍、镍、铜、锌、铌、钽、钨和钇元素含量测定 封闭酸溶-电感耦合等离子体质谱法
- DB11T 1197-2024住宅全装修设计标准
- 军队公寓住房管理规定
- 领导干部个人有关事项报告制度
- 企业团购行业报告
- 废品回收合同范本
评论
0/150
提交评论