- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为了解决基类成员访问问题,C#还提供了另外一种可访问性:protected,只有子类(派生类)才能访问protected成员,外部代码不能访问protected成员。 除了成员的保护级别外,还可以为成员定义其继承行为。基类的成员可以是虚拟的,成员可以由继承它的类重写。子类(派生类)可以提供成员的其他执行代码,这种执行代码不会删除原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问它们。如果没有提供其他执行方式,外部代码就直接访问基类中成员的执行代码。 说明: 扩子类(派生类)不能继承基类中所定义的private成员,只能继承基类的public成员和protected成员。 【例8-15】 下面创建一个控制台应用程序,其中自定义了一个Fruit类;然后自定义Apple类、Grape类、Strawberry类和Pear类,这些类都继承自Fruit类,分别在这些类中定义属性和方法,用于输出水果的信息,运行结果如图8-12所示。(实例位置:光盘\MR\源码\第8章\8-15) 图8-12 输出水果的信息 主要代码如下: class Fruit { string name; //定义字段 string color; //定义字段 public Fruit(string str) //定义构造函数为name字段赋值 { name = str; } public string Color //定义属性为color字段赋值 { set { color = value; } } public void Information() //输出水果信息 { Console.WriteLine({0} 颜色:{1},name, color); } } class Apple : Fruit { string name; //定义字段 string color; //定义字段 public Apple(string str):base(str) //定义构造函数为name字段赋值 { name = str; } } class Program { static void Main(string[] args) { Fruit fruit = new Fruit(水果); //实例化Fruit类的实例 Apple apple = new Apple(苹果); //实例化Apple类的实例 fruit.Color = 无; //设置水果的颜色值 apple.Color = 绿色; //设置苹果的颜色值 fruit.Information(); //输出水果的信息 apple.Information(); //输出苹果的信息 } } 多态使得子类(派生类)的实例可以直接赋予基类的对象(这里不需要进行强制类型转换),然后直接就可以通过这个对象调用子类(派生类)的方法。 在派生于同一个类的不同对象上执行任务时,多态是一种极为有效的技巧,使用的代码最少。可以把一组对象放到一个数组中然后调用它们的方法,在这种情况下多态的作用就体现出来了,这些对象不必是相同类型的对象。当然如果它们都继承自某个类,可以把这些子类(派生类)都放到一个数组中。如果这些对象都有同名方法,就可以调用每个对象的同名方法。 C#中,类的多态性是通过在子类(派生类)中重载基类的虚方法或函数成员来实现的。 说明: 多态的实现方式有多种,可以通过继承实现多态,通过抽象类实现多态和通过接口实现多态。 【例8-16】 下面创建一个控制台应用程序,其中自定义了一个Vehicle类;然后自定义Train类和Car类,这些类都继承自Vehicle类,在Vehicle类中定义虚拟方法,在其子类中重写该方法,输出个交通工具的形态,运行结果如图8-13 8.4.3 类的多态 所示。(实例位置:光盘\MR\源码\第8章\8-16) 图8-13 交通工具的形态 代码如下: class Vehicle { string name; //定义字段 public string Name //定义属性为字段赋值 { set { name = value; } } public virtual void Move()
您可能关注的文档
- C#网络编程及应用 教学课件 作者 刘瑞新 第06章 设计窗体和控件.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第07章 ADO.NET与数据操作.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第12章 FTP协议开发.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第13章 SMTP与POP3协议开发.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第14章 图形图像与多媒体编程.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第15章 基于组件的开发技术.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第16章 XML Web Service开发.ppt
- C#网络编程及应用 教学课件 作者 刘瑞新 第17章 网络安全.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第1章.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第2章.ppt
- 小学开学第一课收心立规矩主题班会教育PPT课件1.pptx
- 大学生开学第一课收心立规矩主题班会教育PPT课件6.pptx
- 小学开学第一课收心立规矩主题班会教育PPT课件16.pptx
- 小学开学第一课收心立规矩主题班会教育PPT课件40.pptx
- 大学生开学第一课收心立规矩主题班会教育PPT课件5.pptx
- 小学一年级开学第一课收心立规矩主题班会教育PPT课件4.pptx
- 初中语文教育教学课件模板:大统一的汉朝.pptx
- 小学一年级开学第一课收心立规矩主题班会教育PPT课件18.pptx
- 初中语文教育教学课件模板:高一烛之武退秦师.pptx
- 大学生开学第一课收心立规矩主题班会教育PPT课件11.pptx
文档评论(0)