好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

面向对象程序设计第五章.ppt

18页
  • 卖家[上传人]:第***
  • 文档编号:49769648
  • 上传时间:2018-08-02
  • 文档格式:PPT
  • 文档大小:49KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第5章面向对象程序 设计进阶 5.1 继承 5.1.1 继承概述 5.1.1 继承概述n从面向对象程序设计的观点来看,继承表示类之间存 在一种一般与特殊的关系,这种关系使得某类对象可 以继承另外一类对象的特征n表示一般的类称为基类或超类,表示特殊的类称为派 生类或子类派生类继承了基类的所有特征,同时又 可以加入自己的特征n继承是面向对象程序设计的基本特征之一,它允许派 生类继承基类的数据成员和成员函数同时,派生类 又可以添加新的成员或者对基类已有成员进行重定义n继承体现了代码重用思想5.1.2 定义派生类 n定义派生类的格式: 类修饰符 class 类名 :基类 { 类体 }n在类定义中,通过在类名的后面加上冒号和基 类名表示继承其它内容与定义类一样 【例5-1】 定义派生类Student P1045.1.3 派生类的构造函数 n在C#中,构造函数不能被继承因此,在派生类中必 须定义派生类的构造函数n派生类构造函数的一般格式: 派生类构造函数名(派生类参数列表) : base(基类参数列表 ) {初始化语句 } n当生成派生类对象时,构造函数的执行顺序为:首先 执行基类构造函数,然后再执行派生类的构造函数。

      【例5-2】 派生类构造函数的执行顺序 P106 5.1.4 访问和隐藏基类成员 1.访问基类成员n在派生类中使用base关键字访问基类成员 base.Speak() 2.成员隐藏n在派生类中,通过定义与基类同名的新成员可 以隐藏基类的成员,从而达到修改基类成员的 目的必须在派生类成员的声明中加上new修 饰符,否则编译器在编译时会发出警告信息 【例5-3】访问和隐藏基类成员 P1085.1.5 禁止继承 nC#提供一种不能被继承的类,称为密封类 如果想定义密封类,只需要在定义类时,使用 sealed修饰符就可以了例5-4】 使用密封类 P1105.1.6 使用扩展 n使用扩展方法可以向现有类中添加新的方法,而无需创建新的派 生类或以其他方式修改原始类扩展方法是在静态类中定义的特 殊静态方法,但它可以像扩展类中的实例方法一样被调用n定义扩展方法的格式:public static 返回值类型 扩展方法名(this 要扩展的类 [扩展方法的 参数列表])n在this关键字的后边指定要扩展的类;如果扩展方法带有参数的话 ,应该在扩展类的后边给出参数列表n调用扩展方法必须遵循以下步骤:q使用using指令导入定义扩展方法的静态类所在的命名空间;q像调用类的实例方法一样调用扩展方法。

      例5-5】 为int类型添加扩展方法 P1115.2 抽象类与接口 5.2.1 抽象类n抽象类表示一种抽象的概念,用来为派生类提供一个 公共接口n抽象类只能作为其它类的基类,不能实例化抽象类 所定义的接口,必须由派生类具体实现n抽象类可以包含抽象方法和抽象属性,也可以包含实 例字段和实例方法 1.定义抽象类n使用abstract修饰符定义类即可定义抽象类 5.2.1 抽象类2.抽象方法n抽象方法是一个只有方法签名,而没有方法体的特殊 方法抽象方法的声明格式:访问修饰符 abstract 返回值类型 方法名(参数列表);n在派生类中,必须实现抽象方法格式: 访问修饰符 override返回值类型 方法名(参数列表) {方法体 }5.2.1 抽象类3.抽象属性n抽象属性的声明格式: 访问修饰符 abstract 返回值类型 属性名{get; set; }n在派生类中,必须实现抽象属性具体格式: 访问修饰符 override返回值类型 属性名{get{ get访问器代码块 }set{ set访问器代码块 } } 【例5-6】 使用抽象类 P1135.2.2 接口 1. 接口声明n接口声明是一种类型声明,它定义一个新的接口类型。

      接 口声明格式: 接口修饰符 interface 接口名 : 基接口{ 接口体 }n接口可以包含方法、属性、索引和事件n接口可以从零或多个接口继承,被继承的接口称为该接口 的显式基接口public interface IShape {double GetArea();string Type { get; } }5.2.2 接口2. 接口实现n由于接口不提供实现,所以必须使用 类和结构来实现例5-7】 实现IShape接口 P1155.3 多态5.3.1 多态概述 n多态性是指不同对象收到相同消息时,会产生不同动 作从而实现“一个接口,多种方法”比如,向MP3 发送“播放”消息,它会播放音乐,而向DVD发送“播放 ”消息,它会播放电影nC#支持两种多态性:q编译时多态性(静态多态性)在程序编译时就决定如何实现 某一动作,它是通过重载实现的编译时多态性在编译时就 知道调用方法的全部信息q运行时多态性(动态多态性)是在程序运行时动态实现某一 动作,它是通过继承和虚方法实现的 5.3.2 虚方法与重载方法 n在定义时加上virtual 修饰符,则该方法就是虚方法n在派生类中重载虚方法时,要为重载方法加上 override修饰符。

      n重载虚方法要求派生类的重载方法的方法名称、方法 参数类型、方法参数数量、方法参数顺序和方法返回 值类型都必须与基类中的虚方法完全一样n在派生类中重载虚方法,将重写从基类继承来的具有 相同名称的虚方法,从而使该方法专用于派生类,为 派生类做具体的工作 【例5-8】 重载虚方法和重写非虚方法 P1175.3.3 运算符重载 n运算符重载的基本格式:public static 返回值类型 operator 运算符(参数 列表)noperator 关键字用来重载运算符,public和 static修饰符为必选项public static int operator +(Prime data1,Prime data2)【例5-9】 重载加法运算符 P1195.3.4 实现多态 n在C#中,可以通过继承、抽象类和接口实现多态性n使用继承实现多态性时,应该在基类中定义虚方法, 然后在派生类中重载虚方法n使用抽象类实现多态性时,应该在抽象类中定义抽象 方法,然后在派生类中实现抽象方法此时的抽象方 法与虚方法类似n使用接口实现多态性时,应该在接口中定义方法,然 后在派生类中实现在接口中定义的方法 【例5-10】 计算圆和圆内接正方形的面积和周长 P1205.4 综合案例——细化毕业设计管理系 统的实体类 n在毕业设计管理系统中,有三类人员,即教师 、管理人员和学生。

      n在上一个案例中,三类人员都用Person类实现 本案例对Person类再进一步细化,将 Person类定义为抽象类,然后从Person类派 生出Teacher类、Admin类和Student类,以表 示教师、管理人员和学生。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.