- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教学安排 上课周次 第8、9、10周 上课方式 讲授与演示结合 教学环境 计算机实验室 课时 6学时 教学内容 继承和多态 教学目标 掌握C#面向对象中继承和多态的使用方法 教学重点 继承;多态 教学难点 继承;多态 教 案 教 学 过 程 备注 内容 继承和多态 授课过程 授课过程 1. 继承 C#语言类继承有如下特点: C#语言只允许单继承,即派生类只能有一个基类。 C#语言继承是可以传递的,如果C从B派生,B从A派生,那么C不但继承B的成员,还要继承A中的成员。 派生类可以添加新成员,但不能删除基类中的成员。 派生类不能继承基类的构造函数、析构函数和事件。但能继承基类的属性。 派生类可以覆盖基类的同名成员,如果在派生类中覆盖了基类同名成员,基类该成员在派生类中就不能被直接访问,只能通过base.基类方法名访问。 派生类对象也是其基类的对象,但基类对象却不是其派生类的对象。例如,前边定义的雇员类Employee是Person类的派生类,所有雇员都是人类,但很多人并不是雇员,可能是学生,自由职业者,儿童等。因此C#语言规定,基类的引用变量可以引用其派生类对象,但派生类的引用变量不可以引用其基类对象。 (1)基类和派生类 继承提供了创建新类的一种方法,继承对开发者来说就是代码共享。 通过继承创建的子类是作为另一个类的扩充或修正所定义的一个类。 子类从超类(父类)中继承所有方法和变量。 子类和超类之间是特化与范化的关系。 如果要声明一个类派生于另一个类,可以使用下面的语法: class MyDerivedClass : MyBaseClass{// functions and data members here} 注意: 这个语法非常类似于C++和Java中的语法,但是,C++程序员习惯于使用公共和私有继承的概念,要注意C#不支持私有继承,因此基类名上没有public或private限定符。支持私有继承会大大增加语言的复杂性,实际上私有继承在C++中也很少使用。 如果类(或结构)也派生于接口,则用逗号分隔开基类和接口: public class MyDerivedClass : MyBaseClass, IInterface1, IInterface2{//etc.} 对于结构,语法如下: public struct MyDerivedStruct : IInterface1, IInterface2{//etc.} 如果在类定义中没有指定基类,C#编译器就假定System.Object是基类。因此下面的两段代码生成相同的结果: class MyClass : Object?? //derives from System.Object{//etc. } 和 class MyClass?? //derives from System.Object{//etc. } 第二种形式比较常用,因为它较简单。 C#支持object关键字,它用作System.Object类的假名,所以也可以编写下面的代码: class MyClass : object?? //derives from System.Object{//etc. } 如果要引用Object类,可以使用object关键字,智能编辑器(如Visual Studio)会识别它,因此便于编辑代码。 (2)隐藏基类成员 在派生类中,通过声明与基类完全相同新成员,可以覆盖基类的同名成员,完全相同是指函数类型、函数名、参数类型和个数都相同。如上例中的方法Display()。派生类覆盖基类成员不算错误,但会导致编译器发出警告。如果增加new修饰符,表示认可覆盖,编译器不再发出警告。请注意,覆盖基类的同名成员,并不是移走基类成员,只是必须用如下格式访问基类中被派生类覆盖的方法:base.Display()。 如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual 和 override,派生类方法就会隐藏基类方法。 在大多数情况下,是要重写方法,而不是隐藏方法,因为隐藏方法会存在为给定类的实例调用错误方法的危险。但是,如下面的例子所示,C#语法可以确保开发人员在编译时收到这个潜在错误的警告,使隐藏方法更加安全。这也是类库开发人员得到的版本方面的好处。 (3)base关键字 base关键字用于从派生类中访问基类成员,它有两种基本用法: ①在定义派生类的构造函数中,指明要调用的基类构造函数,由于基类可能有多个构造函数,根据base后的参数类型和个数,指明要调用哪一个基类构造函数。参见上节雇员类Employe
文档评论(0)