第5章抽象类多态和接口.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第5章抽象类多态和接口.ppt》由会员分享,可在线阅读,更多相关《第5章抽象类多态和接口.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章抽象类多态和章抽象类多态和接口接口现在学习的是第1页,共24页理解抽象类、多态和接口理解抽象类、多态和接口在在C#中使用抽象类、多态和接口中使用抽象类、多态和接口主要内容主要内容现在学习的是第2页,共24页什么是抽象类?什么是抽象类?抽象方法:包含方法定义,但没有具体实现的方法,需要其子类或者子类抽象方法:包含方法定义,但没有具体实现的方法,需要其子类或者子类的子类来具体实现。的子类来具体实现。抽象类:含有一个或多个抽象方法的类称为抽象类。抽象类不能够被实例抽象类:含有一个或多个抽象方法的类称为抽象类。抽象类不能够被实例化,这是因为它包含了没有具体实现的方法。化,这是因为它包含了没有具
2、体实现的方法。使用关键字使用关键字abstract修饰修饰现在学习的是第3页,共24页声明抽象类声明抽象类抽象类抽象类publicabstractclassPlayer抽象方法抽象方法.在在C#中,使用关键字中,使用关键字abstract来定义抽象方法(来定义抽象方法(abstractmethod),并需要把),并需要把abstract关键字放在访问级别修饰符和方法关键字放在访问级别修饰符和方法返回数据类型之前,没有方法实现的部分,格式如下:返回数据类型之前,没有方法实现的部分,格式如下:publicabstractvoidTrain();.子类继承抽象父类之后,可以使用子类继承抽象父类之后,
3、可以使用override关键字覆盖父类中的关键字覆盖父类中的抽象方法,并做具体的实现,格式如下:抽象方法,并做具体的实现,格式如下:publicoverridevoidTrain()现在学习的是第4页,共24页抽象类和抽象方法抽象类和抽象方法abstractclassClassOne/类实现访问修饰符派生类的基类不能实例化现在学习的是第5页,共24页abstractclassBase/成员变量成员变量intbasevar;/成员函数成员函数abstractvoidbase_fun1(parameters);/无法实现无法实现.抽象方法抽象方法classDerived:Base/成员变量成员变量
4、intderivedvars;/成员函数成员函数overridevoidBase_fun1(parameters)/实际实现实际实现.抽象类派生类提提供供重写方法原型原型必须重写重写抽象类和抽象方法抽象类和抽象方法现在学习的是第6页,共24页演示usingSystem;namespaceExample_5abstractclassABCpublicabstractvoidAFunc();publicvoidBFunc()Console.WriteLine(“这是一个非抽象方法!);classDerv:ABCpublicoverridevoidAFunc()Console.WriteLine(“
5、这是一个抽象方法!);抽象类 不能实例化派生类 重写方法staticvoidMain(stringargs)DervobjB=newDerv();objB.AFunc();objB.BFunc();现在学习的是第7页,共24页abstractclassMyAbspublicabstractvoidAbMethod();/派生类classMyClass:MyAbspublicoverridevoidAbMethod()Console.WriteLine(“在MyClass中实现的抽象方法);/派生自MyClass的子类classSubMyClass:MyClasspublicvoidGenera
6、l()/未实现AbMethod抽象方法Console.WriteLine(在SubMyClass中未实现的抽象方法);staticvoidMain(stringargs)SubMyClassobjSubClass=newSubMyClass();objSubClass.General();现在学习的是第8页,共24页演示 public abstract class Player public abstract void Train();/抽象方法:训练public class FootballPlayer:Player public override void Train()Console.W
7、riteLine(Football players are training.);public class SwimPlayer:Player public override void Train()Console.WriteLine(Swim players are training.);public class Sprinters:Player public override void Train()Console.WriteLine(Sprinters are training.);抽象类 不能实例化派生类 重写方法staticvoidMain(stringargs)FootballPl
8、ayerfPlayer=newFootballPlayer();fPlayer.Train();SwimPlayerswimPlayer=newSwimPlayer();swimPlayer.Train();Sprinterssprinters=newSprinters();sprinters.Train();现在学习的是第9页,共24页抽象类抽象类1、声明一个抽象方法使用、声明一个抽象方法使用abstract关键字。关键字。2、一个类中可以包含一个或多个抽象方法。、一个类中可以包含一个或多个抽象方法。3、抽象类中可以存在非抽象的方法。、抽象类中可以存在非抽象的方法。4、抽象类不能被直接被实例
9、化。、抽象类不能被直接被实例化。5、实现抽象类用、实现抽象类用“:”(冒号),实现抽象方法用(冒号),实现抽象方法用override关键字。关键字。6、抽象类可以被抽象类所继承,结果仍是抽象类。、抽象类可以被抽象类所继承,结果仍是抽象类。7、抽象方法被实现后,不能更改修饰符。、抽象方法被实现后,不能更改修饰符。现在学习的是第10页,共24页多态多态多态就是父类定义的抽象方法,在子类对其进行实现之后,多态就是父类定义的抽象方法,在子类对其进行实现之后,C#允许将子允许将子类赋值给父类,然后在父类中,通过调用抽象方法来实现子类具体的功能。类赋值给父类,然后在父类中,通过调用抽象方法来实现子类具体的
10、功能。上一例子中,教练说上一例子中,教练说“去训练吧去训练吧”,所有的运动员肯定会知道该怎么去做。,所有的运动员肯定会知道该怎么去做。现在学习的是第11页,共24页多态和重载的区别多态和重载的区别重载,是指允许存在多个同名函数,而这些函数的参数不同。重载的实现是:编译器,是指允许存在多个同名函数,而这些函数的参数不同。重载的实现是:编译器根据函数不同的参数表,对同名函数的名称加以修饰。对于编译器而言,这些同名函根据函数不同的参数表,对同名函数的名称加以修饰。对于编译器而言,这些同名函数就成不同的函数。它们的调用地址在编译期间就绑定了。数就成不同的函数。它们的调用地址在编译期间就绑定了。多态,是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽象 类多态 接口
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内