实验6类的继承与多态
安徽机电职业技术学院实验报告
一、实验目的
1、进一步掌握类的定义与使用;
2、掌握类的继承,以及访问属性public, private和protected的用法;
3、了解类的多态性;
4、掌握使用类来构造应用程序。
二、实验内容
使用Visual Studio .NET 2005,在Point-Circle-Cylinder 示例程序中,添加一个圆锥体类(Cone),该类派生自圆类(Circle),并具有以下属性:高度(Height),以及以下方法:Area (求圆锥体的表面积)、Volumn (求圆锥体的体积)
三、实验步骤
1、将服务器上“面向对象”课件的文件夹中的“Csharp示例第7课\ Exercise ”文件夹复制到本地磁盘上。打开其中的" Exercise.sln ”,完成其中的3个任务。这3个任务目标写在Form1.cs文件中,需要在项目中添加2个类(圆类Circle,圆锥体Cone)的定义。
2、将完成的源程序压缩后,连同本实验报告,一同通过电子邮件交给指导教师。
四、程序运行结果截图
程序运行后单击"Circle类测试"按钮后的运行结果截图:
口"黄的魅承与备态
菁除
圆的趙标是a Y坐标是0,半径是0
新圖的位置和半径是’圆心坐标=及2];半逐丸卫5 直径是:3.50
周长是》26.70
面积是:56,75
[测试口rd■尝〔I [別汛恥eL □斌匕皿裟[测口心1血奥]| 程序运行后单击"Cone类测试"按钮后的运行结果截图: 园的邂标是6 Y坐标是6半径是0 新E的位萱和半径是’ II心坐标=2 2];半径45 園徳休的面积足=132.11 區]锥体和是:103. 69 程序运行后单击”多态性测试”按钮后的运行结果截图: 矩形;£上争坐标t [呱40h长刃比反宽吃0 面机250体积;0 长方体:左上ft坐标:[沁切h长临反宽M反髙度=10面积;165 休和t 115 园心坐标-[0, Q];半径电5 55.7632636012188口]| -回IhEaj [蜃态也責示I 圍心坐标-[0,0],半径P.E 面和* 3.3. 48451D0064T5 测试加皿类珈直胁5£1啖 [藤志性涓示 II B II-B- 面秧 Mrhn Fl 安徽机电职业技术学院实验报告 面向对象程序设计(C#) } } 五、程序源代码(用Winrar 压缩后用附件提交,源代码中要有比较完备的注释 请粘贴于此: Circle 类的代码: P rivate double radius; p ublic double Radius get return radius; set { radius = } public Circle() this .X = 0; this .Y= 0; this .radius = 0; public Circle( int X, int Y, double radius): base(X,Y) this .X = X; this .Y = Y; this .radius = radius; public override double Area() return Math.Round( Math .PI * Math .Po w(this public double zhouchang() return "圆心坐标="+ base.ToString() + " ="+Math.Round( this .zhouchang(),2); //return " 圆心坐标=["+this.X+","+this.Y+"]; "+Math.Round(this.zhouchang())+"\n"+" 圆的面积="+Math.Round(this.Areaes()); ),以下代码 class { Circle : Point value ; .radius,2),2); return 2 * Math. PI * radius; p ublic override string Name get return "圆"; P ublic override string ToString() 半径="+ radius+ "\r 圆的周长 半径="+ radius+"\n"+" 圆的周长 } } 任务 1 的代码: // TODO 1: 给本项目添加 1个 Circle 类的定义,它继承自 Point 类 Circle a = new Circle (5,5,5); string str=https://www.360docs.net/doc/f43159397.html,+ ":" Output(str); privat e privat e double double Height ; height class { Cone 类的代码: Cone: Circle get set Height = return Height; value ; public Cone() this .Height = 0; this .X = 0; this .Y = 0; public Cone( int X, int Y, double radius, double Height): base(X,Y,radius) this this this this .X = X; .Y = Y; .Height = Height; .Radius = radius; public double Areas() } public { } public get return override return override return base.Area() + ( this .zhouchang() * Height) / 2; double Volume() Math.Round(( base.Area() * Height) / 3,2); string Name "圆锥"; + a.ToString(); 安徽机电职业技术学院实验报告面向对象程序设计(C#) p ublic override string ToString() { return "圆心坐标=["+ this .X + "," + this .Y + "];半径="+ this .Radius + "\n" + " 圆锥的高="+this .Height+ "圆锥的表面积="+Math.Round( this .Areas(),2); } } 任务2的代码: // TODO 2:给本项目添加1个Cone类的定义,它继承自Circle 类 Cone b = new Cone(1,2, 3,4); string strs = https://www.360docs.net/doc/f43159397.html, + ":" + b.ToStringO; Out pu t(strs); 六、思考题: 1、请说明private、public、protected 这3个访问修饰符的作用 public 成员,可以从程序的任何位置,通过该类(基类或派生类)的对象引用,来访问它。private 成员,只能在基类的主体中访问它 protected(保护的)成员,只能在基类和它的派生类中访问。 2、请说明什么是类的多态性?类的多态性有什么样的优点? 多态性是一个面向对象的概念,它允许以相似的方式来对待所有些派生 的派生类,尽管这 类是各不相同的。创建派生类的目的是为了获得更多的特殊功能。 通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。 便于代码的调用和减少代码量。