CX构造函数调用顺序.docVIP

  • 29
  • 0
  • 约3.49千字
  • 约 5页
  • 2017-03-15 发布于四川
  • 举报
C#课程测试报告 姓名: 薛守来 学号: 年级: 09级 班级: 11班 提交日期: 2011/9/7 指导老师: 吕帅 题目:派生类的构造函数调用过程测试与分析(4.2.6.派生类的构造函数)基类GenericCustomer包含:私有成员name,带1个参数的构造函数;派生类Nevermore60Customer包含:私有成员referrerName和highCostMinutesUsed,带2个参数的构造函数,带1个参数的构造函数。 请为基类GenericCustomer添加一个无符号整型字段Id(公有成员),为派生类Nevermore60Customer添加一个字符串型字段nickName(私有成员),设计并实现几个有调用关系的构造函数(构造函数中必须包含name和Id的初始化,一定没有highCostMinutesUsed的初始化),进行必要的测试,以说明构造函数的调用和执行次序,以及字段的初始化顺序。public class GenericCustomer //基类 { private string name; public uint Id; public GenericCustomer(string name) { Console.WriteLine(GenericCustomer Constructor!); this.name = name; } } public class Nevermore60Customer : GenericCustomer //派生类 { private string referrerName; private uint highCostMinutesUsed; private string nickName; public Nevermore60Customer(string name, uint Id) : base(name) { Console.WriteLine(Nevermore60Customer Constructors with 2 parameters.); base.Id = Id; } base(name)调用基类构造函数,利用主函数调用派生类构造函数时我们得到结果: 显然,其执行过程是按照先基类后派生类的顺序,这也符合我们的理解,先初始化后操作才是合理的方式。 由此,我们不难继续测试,相应增加一个参数的构造函数,同理可得到3个构造函数的调用顺序,即题目所要求测试出的结果。 至于初始化顺序,不难发现,按照程序执行情况,应该跟构造函数的调用情况是一致的,即加上相应的说明情况即得出结论。 在相应的构造函数中加入如下代码: 基类中: Console.WriteLine(Name initialized !); 派生类双参数构造函数中: Console.WriteLine(Id initialized !); 从而我们得出相应的运行结果: 最后就是关于同一类中构造函数的调用方式。可以定义为2参调1参,也可以定义为1参调2参,我们不妨采用后者。直接加上相应的单参构造函数,如下: public Nevermore60Customer(string name) : this(name, 0) { Console.WriteLine(Nevermore60Customer Constructors with 1 parameter.); } 得出结果即为我们所期望的,结论就是按照先基类,再派生类中先调用函数,最后是Main方法中调用的构造函数。 算法设计流程:首先定义基类GenericCustomer及单参构造函数,然后派生Nevermore60Customer类,并分别设计1个参数和2个参数的构造函数,初始化时调用基类函数或者本类中函数,同时执行相应初始化工作,并在

文档评论(0)

1亿VIP精品文档

相关文档