实验十一C#材料.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验实验目的 实验要求: 实验步骤 上例中,x_pub是public公共成员,可以自由访问,是“暴露在外”的成员。访问没有任何限制。 x_prot是protected保护成员,可以在本类成员和子类成员中访问。但不能从其它类访问。 x_pri是私有成员,只能在本类成员中访问,限制最大 根据访问属性,判断上述程序中哪些语句调用是合法的? 练习1: 指出上述类中,有哪些成员?其中,哪些成员可以在类外部直接访问,哪些成员可以在子类访问,哪些成员只能在本类中访问? 2 在子类中对方法进行重定义 父类中已经定义的方法,在子类中可以进行重新定义: 在上述程序中,父类Person定义了方法Hi(),在子类中也定义了同名同参数的方法Hi()。 一般上,对象能够容易地确定调用哪个版本的方法。 练习2 判断上述程序中,p和s分别调用了哪个版本的方法Hi()? 3 子类引用可以赋值给父类引用变量。 C#中规定,子类引用可以赋值给父类引用变量 例:如果B是A的子类,则 A a1; // a1是类A的引用变量 a1 = new B(); // 该语句是合法的。前提是B是A的子类 假如父子类中都定义了相同名字(包括参数类型)的方法,当我们通过引用来调用方法时,C#如何确定到底调用哪个版本的方法呢? 例: 默认情况下,如果通过对象引用调用方法,会根据对象定义时的类型决定调用的方法的版本: 上例中,因为变量p的定义类型为Person,实际引用的对象是Student类型。所以调用p.Hi()时,调用的是类Person中的Hi()方法。 4 使用虚方法实现多态 很多情况下,我们希望能够调用引用变量实际引用的对象的方法版本,需要使用“虚函数”。使用虚函数,需要在父类定义中,在方法前加上virtual 关键字,并在子类的相应方法中,添加override关键字: 上例中,采用了虚函数,所以会根据p所引用的实际的对象类型决定调用的版本。因为p引用的实际类型是Student,所以调用的是Student类中的Hi()方法。 练习3: 以下程序1和程序2的输出结果是什么?比较一下有什么不同? 4 使用New关键字实现多态以及使用抽象方法实现多态 练习4 : 将练习3中的程序1用new关键字隐藏父类方法以及抽象方法两种方式,进行改写,来实现多态。 练习5:类的多态性实验综合编程 设计雇员系统的类库,定义雇员(Employee)基类,共同的属性,姓名、地址和出生日期,子类:程序员(Processor),秘书(Secretary),高层管理(Master),清洁工(Cleaner),他们有不同的工资算法: (1)其中高级主管和程序员采用底薪加提成的方式,高级主管和程序员的底薪分别是5000元和2000元, 提成百分比按照当月的项目完成情况设置(提示:提成百分比作为方法形参)。 (2)秘书和清洁工采用固定工资的方式,工资分别是3000和1000 请以多态的方式处理程序,实现雇员系统的类库中的各成员工资的计算。 练习6:接口的应用与理解 完成课本P173页的例8.12 ,利用接口的继承实现模拟银行存取款。 using System; class Person { public int x_pub = 10; private int x_pri = 20; protected int x_prot = 30; public void f1() { // 在定义成员的同一个类内,可以访问public, protected, privated成员 Console.WriteLine(x_pub); Console.WriteLine(x_pri); Console.WriteLine(x_prot); } } class Student : Person { public void f2() { // 在子类成员中,可以访问public, protected成员,但不能访问privated成员 Console.WriteLine(x_pub); // Console.WriteLine(x_pri); // 子类中不能访问父类定义的private成员 Console.WriteLine(x_prot); } } class Test { public static void Main()

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档