- 1、本文档共88页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1.1.7面向对象高级深圳市信息职业技术学院
类的继承01目录Sealed关键字02多态03抽象类和接口04异常0506命名空间和程序集
知识回顾类的定义及对象构造方法this和static关键字面向对象的概念访问修饰符垃圾回收嵌套类和匿名类对象初始化器
学习目标通过本节学习可以:重点学习类的继承重点学习多态重点学习抽象类和接口掌握sealed关键字掌握异常了解命名空间和程序集
01类的继承
类的继承继承的概念在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,在程序中便可认为猫和狗继承自动物,同理波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗继承自狗,这些动物之间会形成一个继承体系。具体如下图所示。
类的继承继承的概念在C#中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有的类被称作父类,子类会自动拥有父类所有可继承的属性和方法。例如动物和犬科的继承关系,可以用如下代码表示:classAnimal{}classDog:Animal{//Dog类继承Animal类//Dog类可以自动拥有Animal类的属性和方法}
类的继承继承的概念在类的继承中,需要注意一些问题,具体如下:继承具有单一性,也就是说一个类只能有一个直接的父类,例如下面的语句是错误的。classA{}classB{}classC:A,B{}//C类不可以同时继承A类和B类classA{}classB:A{}classC:A{}//类B和类C都可以继承类A多个类可以继承同一个父类,例如下面的语句是正确的。
类的继承继承的概念在C#中,多层继承是可以的,即一个类的父类可以再去继承其他类,例如C类继承自B类,B类又继承自A类,此时C类也可称作A类的子类,下面的语句是正确的。classA{}classB:A{}//B类继承自A类,B类是A类的子类classC:B{}//C类继承自B类,C类是B类的子类
构造方法的执行过程构造方法的执行过程在上一章中学习了构造方法的定义以及重载,了解到构造方法可以用于初始化类的静态成员和实例成员。在继承关系中,构造方法的执行过程会变得有些不一样,下面进行具体分析。当一个类的对象被创建时,如果该类拥有父类的话,在调用自身构造方法的同时还会调用父类的构造方法,其具体执行过程如下图所示。从图中可以看出,子类在实例化对象时,首先会调用父类的构造方法,然后再调用自身的构造方法。
隐藏基类方法隐藏基类方法子类在继承父类时可以对父类的成员进行扩展,如果子类中出现与父类同名的方法,那么在调用该方法时程序就不能明确该方法是属于父类还是子类,这时编译器就会提示使用new关键字隐藏基类方法。接下来通过一个案例来演示如何隐藏基类方法。
隐藏基类方法隐藏基类方法程序编译出现警告,如下图所示。根据程序编译警告,将程序第9行代码添加一个new关键字,修改后的代码片段如下所示。classDog:Animal{publicnewvoidShout(){//与父类方法重名Console.WriteLine(汪汪......);}}添加new关键字
隐藏基类方法隐藏基类方法运行结果,如下图所示。在示例中,Dog类继承Animal类,同时Dog类中存在与父类相同的方法Shout(),因此,使用new关键字可以明确告诉编译器执行Dog类中的Shout()方法,解决继承关系中方法同名的问题。
装箱和拆箱装箱和拆箱在实际开发过程中,某些方法的参数类型为引用类型,如果调用时传入的是数值类型,此时需要进行装箱操作。同样当一个方法的返回值类型为数值类型时,实际上该方法的返回值为引用类型,此时就需要进行拆箱操作。简单来说,装箱就是将数值类型转换为引用类型,拆箱就是将引用类型转换为数值类型。接下来通过一个案例来学习装箱与拆箱操作,具体如下所示。
装箱和拆箱装箱和拆箱namespaceProgram04{classProgram{staticvoidMain(string[]args){intnum=100;objectobj=num;Console.WriteLine(对象obj的值为{0},obj);num=(int)obj;
您可能关注的文档
- MES开发与应用 课件 1.1.1-1.1.3 工业管理软件系统技术栈介绍(2).pptx
- MES开发与应用 课件 1.1.4 工业管理软件系统技术栈介绍-认识C#语言.pptx
- MES开发与应用 课件 1.1.5 工业管理软件系统技术栈介绍-C#编程基础.pptx
- MES开发与应用 课件 1.1.6 工业管理软件系统技术栈介绍-面向对象基础.pptx
- MES开发与应用 课件 1.1.8 工业管理软件系统技术栈介绍-集合.pptx
- MES开发与应用 课件 1.1.9 工业管理软件系统技术栈介绍-C#常用类.pptx
- MES开发与应用 课件 1.1.10 工业管理软件系统技术栈介绍-文件操作.pptx
- MES开发与应用 课件 1.1.11 工业管理软件系统技术栈介绍-使用ADO.NET操作系统.pptx
- MES开发与应用 课件 1.1.12 工业管理软件系统技术栈介绍-Linq常用语法.pptx
- MES开发与应用 课件 1.1.13 工业管理软件系统技术栈介绍-DotNetCore介绍.pptx
文档评论(0)