C#中的高级OOP概念市公开课一等奖省赛课获奖课件_第1页
C#中的高级OOP概念市公开课一等奖省赛课获奖课件_第2页
C#中的高级OOP概念市公开课一等奖省赛课获奖课件_第3页
C#中的高级OOP概念市公开课一等奖省赛课获奖课件_第4页
C#中的高级OOP概念市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论