面向对象的高级编程

面向对象的高级编程

ID:47003425

大小:436.50 KB

页数:43页

时间:2019-12-03

面向对象的高级编程_第1页
面向对象的高级编程_第2页
面向对象的高级编程_第3页
面向对象的高级编程_第4页
面向对象的高级编程_第5页
资源描述:

《面向对象的高级编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章面向对象的高级编程5.1类的继承与多态性5.2版本控制5.3接口5.4委托和事件5.5反射5.6序列化与反序列化5.1类的继承与多态性封装:隐藏调用者不需要了解的信息。继承:简化类的设计。多态:类为名称相同的方法提供不同实现方式的能力。封装举例:对象封装了对象的数据以及对这些数据的操作。对象是属性和操作的组合对象的表现(服务、接口)和实现细节分开练习(1)Question47.(单选) InObjectorientedProgramming,howwouldyoudescribeencapsulation? 1.Theconversionofonetypeofobjecttoanothe

2、r. 2.Theruntimeresolutionofmethodcalls. 3.Theexpositionofdata. 4.Theseparationofinterfaceandimplementation.答案:45.1.1基类和扩充类继承表示现实世界中遗传关系的直接模拟。它表示类之间的内在联系以及对属性和操作的共享。5.1.1基类和扩充类声明扩充类的语法:[访问修饰符]class扩充类名称:基类名称{//程序代码}扩充类继承了所有定义在基类中数据的定义和方法(针对Public成员和Protected成员)。但是扩充类不继承基类的构造函数。两种实现继承的方式:类继承和接口继承。类继承只

3、允许单一继承,接口可实现多重继承。被继承的类叫基类继承自其他类的类叫扩充类5.1.1基类和扩充类【例5-1】基类和扩充类的定义及用法。publicclassAnimal{publicAnimal(){Console.WriteLine("基类构造函数:Hello,Animal!");}publicvoidEat(){Console.WriteLine("基类方法:Eating");}}【例5-1】基类和扩充类的定义及用法。publicclassCat:Animal{publicCat(){Console.WriteLine("扩充类构造函数:Hello,Cat!");}publicvoidWa

4、lk(){Console.WriteLine(“扩充类方法:Walk");}}classProgram{staticvoidMain(string[]args){Catcat=newCat();cat.Eat();Console.ReadLine();}}运行结果:基类构造函数:Hello,Animal!扩充类构造函数:Hello,Cat!基类方法:Eating5.1.2多态性多态性是指对象可以表示多个类型的能力。在C#中,多态性的定义是:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。3种实现多态性的方法:通过继承实现多态性。通过抽象类实现多态性。通过接口实现

5、多态性。多态用相同的操作名在一个类层次的不同类中实现不同的功能,相同的消息由同一(父)类的不同对象接收时,导致不同的行为。举例:几何图形类层次中的多态性。其派生类“圆”、“长方形”、“三角形”等都有方法“求面积”。。几何图形圆三角形几何图形圆Shape类GetArea()Rectangle类GetArea()Circle类GetArea()Triangle类GetArea()5.1.2多态性1、虚拟方法在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符virtual表明:publicvirtualvoidmyMethod(){……//程序代码}扩充类则用override重写:pub

6、licoverridevoidmyMethod(){……//程序代码}5.1.2多态(续)使用虚拟方法和重写方法时,要注意下面几个方面:虚拟方法不能声明为静态的。Virtual不能和private一起使用。重写方法的名称、参数个数、类型以及返回值都必须和虚拟方法的一致。//MyClass.csusingSystem;namespaceConsoleTest{classMyClass{publicvirtualvoidHello(){Console.WriteLine("123");}}}//MyNewClass.csusingSystem;namespaceConsoleTest{classM

7、yNewClass:MyClass{privatestringstr="hello";publicoverridevoidHello(){Console.WriteLine(str);}}}虚拟方法与重写举例5.1.2多态(续)【例5-2】重写基类的方法。5.1.2多态(续)2、隐藏基类的方法在扩充类中,可以使用new关键字来隐藏基类的方法,即使用一个完全不同的方法取代旧的方法。与方法重写不同的是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。