面向对象的高级编程

面向对象的高级编程

ID:39750110

大小:388.00 KB

页数:33页

时间:2019-07-10

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

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

1、第5章面向对象的高级编程5.1类的继承与多态性5.2接口5.3委托和事件2021/8/305.1类的继承与多态性封装:隐藏调用者不需要了解的信息。继承:简化类的设计。多态:类为名称相同的方法提供不同实现方式的能力。2021/8/305.1.1基类和扩充类(派生类)继承表示现实世界中遗传关系的直接模拟。它表示类之间的内在联系以及对属性和操作的共享。2021/8/305.1.1基类和扩充类声明扩充类的语法:[访问修饰符]class扩充类名称:基类名称{//程序代码}扩充类继承了所有定义在基类中数据的定义和方法。但是扩充类不继承基类的构造函数,不能继承基类中所定义的private成员,只能继承基类

2、的public或protected成员。两种实现继承的方式:类继承和接口继承。类继承只允许单一继承,接口可实现多重继承。被继承的类叫基类继承自其他类的类叫扩充类(或者称为派生类)2021/8/30【例5-1】基类和扩充类的定义及用法publicclassAnimal{publicintMyProperty{get;set;}publicAnimal(){Console.WriteLine("基类构造函数:Hello,Animal!");}publicvoidEat(){Console.WriteLine("基类方法:Eating");}}publicclassCat:Animal{publi

3、cCat(){Console.WriteLine("扩充类构造函数:Hello,Cat!");}publicvoidWalk(){Console.WriteLine("基类方法:Walk");}}2021/8/30【例5-1】基类和扩充类的定义及用法(续)classProgram{staticvoidMain(string[]args){Catcat=newCat();cat.Eat();Console.ReadLine();}}类Cat继承自类Animal,当创建Cat的实例时,会首先调用基类的构造函数,然后调用扩充类的构造函数。基类构造函数:Hello,Animal!扩充类构造函数:He

4、llo,Cat!"基类方法:Eating2021/8/305.1.2多态性多态性是指对象可以表示多个类型的能力。在C#中,多态性的定义是:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。3种实现多态性的方法:通过继承实现多态性。多个类可以继承自同一个类,每个扩充类又可根据需要重写基类成员以提供不同的功能。通过抽象类实现多态性。通过接口实现多态性。2021/8/305.1.2多态性1、虚拟方法在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符virtual表明:publicvirtualvoidmyMethod()//虚方法{……//程序代码}扩充类

5、则用override重写:publicoverridevoidmyMethod()//重写基类的虚方法{……//程序代码}2021/8/305.1.2多态(续)使用虚拟方法和重写方法时,要注意下面几个方面:虚拟方法不能声明为静态(static)的。virtual不能和private一起使用。重写方法的名称、参数个数、类型以及返回值都必须和虚拟方法的一致。2021/8/30【例5-2】重写基类的方法。classShape{publicvirtualvoidShowShape(){Console.WriteLine("图形!");}}classTriangle:Shape{publicoverr

6、idevoidShowShape(){base.ShowShape();//调用基类中的方法Console.WriteLine("三角形!");}}classProgram{staticvoidMain(){Triangleme=newTriangle();me.ShowShape();}}2021/8/30多态对象publicclassDimensions{publicconstdoublepi=Math.PI;protecteddoublex,y;publicDimensions(doublex,doubley){this.x=x;this.y=y;}publicvirtualdoubl

7、eArea(){returnx*y;}}publicclassCircle:Dimensions{publicCircle(doubler):base(r,0){}publicoverridedoubleArea(){returnpi*x*x;}}publicstaticvoidMain(){doublex=3.0,y=5.0;Dimensionsa=newDimensions(x,y);Dimensions

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

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

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