收藏 分享(赏)

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

上传人:精品资料 文档编号:11288428 上传时间:2020-03-11 格式:PPT 页数:18 大小:49KB
下载 相关 举报
面向对象程序设计第五章.ppt_第1页
第1页 / 共18页
面向对象程序设计第五章.ppt_第2页
第2页 / 共18页
面向对象程序设计第五章.ppt_第3页
第3页 / 共18页
面向对象程序设计第五章.ppt_第4页
第4页 / 共18页
面向对象程序设计第五章.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、第5章面向对象程序 设计进阶,5.1 继承,5.1.1 继承概述,5.1.1 继承概述,从面向对象程序设计的观点来看,继承表示类之间存在一种一般与特殊的关系,这种关系使得某类对象可以继承另外一类对象的特征。 表示一般的类称为基类或超类,表示特殊的类称为派生类或子类。派生类继承了基类的所有特征,同时又可以加入自己的特征。 继承是面向对象程序设计的基本特征之一,它允许派生类继承基类的数据成员和成员函数。同时,派生类又可以添加新的成员或者对基类已有成员进行重定义 继承体现了代码重用思想。,5.1.2 定义派生类,定义派生类的格式: 类修饰符 class 类名 :基类 类体 在类定义中,通过在类名的后

2、面加上冒号和基类名表示继承。其它内容与定义类一样。 【例5-1】 定义派生类Student P104,5.1.3 派生类的构造函数,在C#中,构造函数不能被继承。因此,在派生类中必须定义派生类的构造函数。 派生类构造函数的一般格式: 派生类构造函数名(派生类参数列表) : base(基类参数列表) 初始化语句 当生成派生类对象时,构造函数的执行顺序为:首先执行基类构造函数,然后再执行派生类的构造函数。 【例5-2】 派生类构造函数的执行顺序 P106,5.1.4 访问和隐藏基类成员,1.访问基类成员 在派生类中使用base关键字访问基类成员。base.Speak() 2.成员隐藏 在派生类中,

3、通过定义与基类同名的新成员可以隐藏基类的成员,从而达到修改基类成员的目的。必须在派生类成员的声明中加上new修饰符,否则编译器在编译时会发出警告信息。 【例5-3】访问和隐藏基类成员 P108,5.1.5 禁止继承,C#提供一种不能被继承的类,称为密封类。如果想定义密封类,只需要在定义类时,使用sealed修饰符就可以了。【例5-4】 使用密封类 P110,5.1.6 使用扩展,使用扩展方法可以向现有类中添加新的方法,而无需创建新的派生类或以其他方式修改原始类。扩展方法是在静态类中定义的特殊静态方法,但它可以像扩展类中的实例方法一样被调用。 定义扩展方法的格式:public static 返回

4、值类型 扩展方法名(this 要扩展的类 扩展方法的参数列表) 在this关键字的后边指定要扩展的类;如果扩展方法带有参数的话,应该在扩展类的后边给出参数列表。 调用扩展方法必须遵循以下步骤: 使用using指令导入定义扩展方法的静态类所在的命名空间; 像调用类的实例方法一样调用扩展方法。【例5-5】 为int类型添加扩展方法 P111,5.2 抽象类与接口,5.2.1 抽象类 抽象类表示一种抽象的概念,用来为派生类提供一个公共接口。 抽象类只能作为其它类的基类,不能实例化。抽象类所定义的接口,必须由派生类具体实现。 抽象类可以包含抽象方法和抽象属性,也可以包含实例字段和实例方法。 1.定义抽

5、象类 使用abstract修饰符定义类即可定义抽象类。,5.2.1 抽象类,2.抽象方法 抽象方法是一个只有方法签名,而没有方法体的特殊方法。抽象方法的声明格式:访问修饰符 abstract 返回值类型 方法名(参数列表); 在派生类中,必须实现抽象方法。格式: 访问修饰符 override返回值类型 方法名(参数列表) 方法体 ,5.2.1 抽象类,3.抽象属性 抽象属性的声明格式: 访问修饰符 abstract 返回值类型 属性名get; set; 在派生类中,必须实现抽象属性。具体格式: 访问修饰符 override返回值类型 属性名get get访问器代码块 set set访问器代码块

6、 【例5-6】 使用抽象类 P113,5.2.2 接口,1. 接口声明 接口声明是一种类型声明,它定义一个新的接口类型。接口声明格式: 接口修饰符 interface 接口名 : 基接口 接口体 接口可以包含方法、属性、索引和事件。 接口可以从零或多个接口继承,被继承的接口称为该接口的显式基接口public interface IShape double GetArea();string Type get; ,5.2.2 接口,2. 接口实现 由于接口不提供实现,所以必须使用类和结构来实现。【例5-7】 实现IShape接口 P115,5.3 多态,5.3.1 多态概述 多态性是指不同对象收到

7、相同消息时,会产生不同动作。从而实现“一个接口,多种方法”。比如,向MP3发送“播放”消息,它会播放音乐,而向DVD发送“播放”消息,它会播放电影。 C#支持两种多态性: 编译时多态性(静态多态性)在程序编译时就决定如何实现某一动作,它是通过重载实现的。编译时多态性在编译时就知道调用方法的全部信息。 运行时多态性(动态多态性)是在程序运行时动态实现某一动作,它是通过继承和虚方法实现的。,5.3.2 虚方法与重载方法,在定义时加上virtual 修饰符,则该方法就是虚方法。 在派生类中重载虚方法时,要为重载方法加上override修饰符。 重载虚方法要求派生类的重载方法的方法名称、方法参数类型、

8、方法参数数量、方法参数顺序和方法返回值类型都必须与基类中的虚方法完全一样。 在派生类中重载虚方法,将重写从基类继承来的具有相同名称的虚方法,从而使该方法专用于派生类,为派生类做具体的工作。 【例5-8】 重载虚方法和重写非虚方法 P117,5.3.3 运算符重载,运算符重载的基本格式:public static 返回值类型 operator 运算符(参数列表) operator 关键字用来重载运算符,public和static修饰符为必选项。public static int operator +(Prime data1,Prime data2)【例5-9】 重载加法运算符 P119,5.3.

9、4 实现多态,在C#中,可以通过继承、抽象类和接口实现多态性。 使用继承实现多态性时,应该在基类中定义虚方法,然后在派生类中重载虚方法。 使用抽象类实现多态性时,应该在抽象类中定义抽象方法,然后在派生类中实现抽象方法。此时的抽象方法与虚方法类似。 使用接口实现多态性时,应该在接口中定义方法,然后在派生类中实现在接口中定义的方法。 【例5-10】 计算圆和圆内接正方形的面积和周长 P120,5.4 综合案例细化毕业设计管理系统的实体类,在毕业设计管理系统中,有三类人员,即教师、管理人员和学生。 在上一个案例中,三类人员都用Person类实现。本案例对Person类再进一步细化,将Person类定义为抽象类,然后从Person类派生出Teacher类、Admin类和Student类,以表示教师、管理人员和学生。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报