(面向对象程序)6.类的继承与多态

(面向对象程序)6.类的继承与多态

ID:39534771

大小:1.10 MB

页数:46页

时间:2019-07-05

(面向对象程序)6.类的继承与多态_第1页
(面向对象程序)6.类的继承与多态_第2页
(面向对象程序)6.类的继承与多态_第3页
(面向对象程序)6.类的继承与多态_第4页
(面向对象程序)6.类的继承与多态_第5页
资源描述:

《(面向对象程序)6.类的继承与多态》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、6类的继承与多态6.类的继承与多态面向对象编程(OOP)的三大特性:封装性继承性多态性本章主要介绍:理解继承和软件继承性理解基类和派生类的概念理解成员修饰符protected使用base引用访问基类成员如何在基类和派生类中使用构造和析构函数通过一个案例,演示继承机制26.1继承概述父类子类动物大象猫继承是软件复用的一种形式。采用这种形式,可吸收现有类的数据和行为,为其赋予新功能,从而创建出新类。软件复用节省了程序开发时间。它还鼓励人们重用经过实践检验和调试的高质量软件,使系统能高效地实现。36.2基类和派生类日常生活中,一个类的对象也是另一个类的对象。如,一个Rectangle(矩形)类“

2、属于”四边形(正方形、平行四边形和梯形同样是四边形)。也可以说,Rectangle(矩形类)是从Quadrilateral(四边形)类继承而来的。Quadrilateral类是基类,Rectangle类是派生类。再如,教师类和学生类可以由大学成员类派生,讲师、教授又可以由教师类派生,毕业生和在校生又可以由学生类派生。46.3保护成员和内部成员前面介绍了成员访问修饰符:public和privatepublic成员,可以从程序的任何位置,通过该类(基类或派生类)的对象引用,来访问它。private成员,只能在基类的主体中访问它再介绍另外两个成员访问修饰符:protected(保护的)成员,只能

3、在基类和它的派生类中访问。internal(内部的)成员,可以从同一个程序集(Assembly)中,通过类的对象引用,来访问它。56.4基类和派生类的关系PointCircleRectangleCylinder66.4.1:Point类点(Point)类具有以下属性:坐标X坐标Y且具有以下方法:ToString():点的字符串表示形式示例代码位于“CSharp示例第6课PointCirlceCylinder”7Point类演示示例代码位于“CSharp示例第6课PointCirlceCylinder”86.4.2Circle类圆(Ciecle)类具有以下属性:坐标X坐标Y半径Rad

4、ius且具有以下方法:Diameter():求直径CircumFerence():求周长Area():求圆的面积ToString():圆的字符串表示形式9Circle类:没有使用继承10Circle类:没有使用继承11Circle类演示示例代码位于“CSharp示例第6课PointCirlceCylinder”12使用类继承以上两个类(Point类和Circle类)中的大部分代码非常类似。程序员最怕的是“重复”劳动,难道需要使用这种“复制”和“粘贴”的方法吗?这将会造成程序员最害怕的“代码维护噩梦”。我们要用一种更优雅的类构造方法,该方法突出了继承的优势。下面的例子说明了这一点。我们修

5、改Circle类,该类从Point类继承了变量x和y,及属性X和Y。注意C#语法中是如何实现类继承的。13Circle类:使用继承publicclassCircle:Point{privatedoubleradius;publicCircle(){……}publicCircle(………){……}publicdoubleRadius{……}publicdoubleDiameter(){……}publicdoubleCircumFerence(){……}publicdoubleArea(){……}publicoverridestringToString(){……}}14Circle类:编译出错

6、?为什么编译会出错?如何改正?为了让Circle类能直接访问Point类的成员变量x和y,我们可以在Point类中将这些变量声明为protected。基类的保护成员可以从基类或其派生类中访问。下述示例的Point类就是这样改造的类,除了x和y的访问属性说明为protected以外,其它与Point类相同。15修改过的Point类publicclassPoint{protectedintx;protectedinty;publicPoint(){……}publicPoint(intx,inty){……}//属性:坐标XpublicintX{……}//属性:坐标YpublicintY{……}/

7、/返回点类的字符表示形式publicoverridestringToString(){……}16这时,使用继承的Circle类可以正常运行了示例代码位于“CSharp示例第6课PointCirlceCylinder”使用单步调试跟踪程序的运行过程,看一看,实例化Circle类的对象时,给Circle类的X和Y属性赋值时,会执行哪些代码?17使用protected成员带来的相关问题如同以前使用public一样,在基类中

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

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

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