- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章目标 继承 继承的基本概念 base关键字 protected访问修饰符 继承的特点 多态 多态的基本概念 抽象类抽象方法及实现 虚方法以及方法的重写 判断对象类型 里氏替换原则 代码冗余 对比这两个类:Student 和 Teacher 提取冗余代码 提取后的应用 生活中的继承 继承的基本概念——父类和子类 在C#中,一个类可以继承另一个类 继承概述 继承是面向对象的一个重要特性 继承的实际应用1 继承的实际应用2 继承的实际应用3 Teacher和Student类都继承Person 继承的实际应用4 都有不同的SayHi方法 base关键字 关键字base的作用 调用父类的属性和方法 调用父类的构造函数 隐式调用父类的构造函数 显示调用父类的构造函数 如果父类没有无参的构造函数 练习 控制台程序实现汽车与卡车的继承 汽车类Vehicle有一个方法vehicleRun()内容可以打印 卡车类Truck有一个方法truckRun()内容也可以打印 实例化一个卡车调用汽车和卡车的方法 成员要用protected修饰 练习参考答案 继承的特点——传递性(一) 继承的特点——传递性(二) 添加一个微型卡车类 继承的特点——单根性 继承实际应用 模拟了现实世界的关系 实现代码重用 结构更清晰 继承实际应用——窗口继承 小结 class A:B 谁是子类?谁是父类? 在子类种访问父类成员的关键字是什么? protected 与 private的区别是什么? class A:B ; class C:A ,C可以访问B的成员么? 简述继承在软件开发中的作用? 回顾继承 调用两种类型的SayHi方法 扩展的麻烦 添加对象后遍历集合 巧妙的做法 修改Person类 生活中的多态 多态的概念 指不同对象收到相同消息时,会产生不同行为 抽象类和抽象方法 抽象类用来列举一个类所需要的行为 抽象类不明确提供具体实现方法 抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性) 抽象类的特点 抽象类不能被实例化 实现抽象方法 使用override实现抽象方法 抽象类的应用场合 抽象类和抽象方法实现多态性 父类提供一系列规定, 约束子类的行为 父类可以提供一些共性的行为 为什么需要虚方法 使用虚方法 重写Equals 判断对象类型对象——is与as is 检查对象是否与指定类型兼容 里氏替换原则 练习 利用多态性编写这三种职业听到“cut”时的行为 面向对象的三大特性 封装 小结 实现面向对象的多态性有那几种方法? 抽象类可以被继承么? 抽象方法可以有方法体么? 简述抽象方法和虚方法的区别? public override void SayHi() { //…具体实现内容 } 重写 实现抽象方法 演示示例2 MySchool Dog : Animal Cat : Animal abstract Animal 猫咪喵喵叫 狗狗汪汪叫 abstract 叫() 是动物就要会叫 大家好,我是某某先生(女士),今年多少岁 抽象方法不能在父类实现 学员 大家好,我是某某同学,今年多少岁,喜欢什么 老师 大家好,我是某某老师,今年多少岁,工作几年了 提供一个通用的方式 学员和老师也可以使用通用方式 默认SayHi能否写在Person类中? 各子类可以重写不同行为SayHi。 可以使用虚方法实现 //person类中默认实现通用的SayHi public virtual void SayHi() { //…省略具体实现 } 虚方法 用默认的SayHi的对象,子类中不需要重写SayHi 用自己的SayHi子类中要重写SayHi 同样使用override重写 public override bool Equals(object obj){ //将要比较的对象转换为当前类型 Student target = obj as Student; //如果为空、类型不同 if( target == null) return false; if (target.name == this.name target.gender == this.gender target.age == this.age target.hobby == this.hobby target.popularity == this.popularity) { return true; } return false; } 判断对象中的每一个属性值是否
文档评论(0)