欢迎来到天天文库
浏览记录
ID:21866613
大小:687.00 KB
页数:59页
时间:2018-10-20
《第8章 继承与多态性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计语言第8章继承与多态性学好程序设计的根本方法是程序!写第8章继承与多态性8.1继承与派生8.2冲突8.3虚函数与多态性8.4习题●实验●课堂练习8.1继承与派生继承性是通过扩展类,实现代码复用,以减少冗余代码。多态性则是通过虚函数,实现接口复用。8.1.1派生类1.派生类概念将类teacher和类student中的重复属性抽出来作为基类people;在类people的基础上,加上成员wage构成教师类teacher,加上成员score构成学生类student。教师类:classteacher
2、{charname[10];//姓名intyear,month,day;//生日floatwage;//工资};学生类:classteacher{charname[10];//姓名intyear,month,day;//生日floatscore;//成绩};8.1.1派生类继承机制是以已有的类为基础,定义新类。已有的类称为基类或父类,新定义的类称为派生类或子类。基类(父类)派生类(子类)student原有属性:nameyear,month,dayfloatwageteacherpeople增加属性:wag
3、e增加属性:score8.1.1派生类2.定义派生类定义类的基本格式为:class类名{成员列表};(1)派生方式的关键字与类中成员的访问权限相同,public、private和protected方式的派生分别称为公有派生、私有派生和保护派生。(2)缺省派生方式为私有派生。(3)类体中新增成员与基本类中成员的定义方法相同。派生:派生方式基类名新增派生8.1.1派生类例8-1定义类people,包含数据成员姓名、出生日期;定义教师类teacher,包含数据成员姓名、出生日期、工资和工作部门。程序设计①以类p
4、eople为其类,派生出类teacher。②类people中包含公同成员姓名和出生日期。③类teacher类体中增加基类中没有的成员工资和工作部门。源程序代码classpeople{charname[10];//姓名intyear,month,day;//生日};classteacher:publicpeople{floatwage;//工资public:chardepartment[20];//部门};:派生方式基类8.1.2派生成员及其访问权限1.派生类中的成员派生类中的成员包括:(1)
5、派生成员——从基类继承来的成员;(2)新增成员——派生类类体中列出的成员。派生类除了从基类继承数据成员外,还继承除构造函数和析构函数以外的其他函数成员。类teacher数据成员新增成员(teacher::)派生成员(people::)nameyearmonthdaywagedepartment访问权限由派生类定义时成员属性的关键字说明访问权限?8.1.2派生成员及其访问权限2.派生成员的访问权限由其在基类中的原有属性和派生方式共同决定。具体为:(1)公有派生时,保持基类中的原有属性不变。(2)私有派
6、生时,均变为私有成员。(3)保护派生时,基类中的原有公有和保护成员,变为保护成员,原有私有成员仍为私有成员。公有派生时派生成员访问权限基类成员权限派生成员权限派生类内部访问方式派生类外部访问方式公有成员公有成员直接访问直接访问保护成员保护成员直接访问间接访问私有成员私有成员间接访问间接访问8.1.2派生成员及其访问权限私有派生时派生成员访问权限基类成员权限派生成员权限派生类内部访问方式派生类外部访问方式公有成员私有成员直接访问间接访问保护成员私有成员直接访问间接访问私有成员私有成员间接访问
7、间接访问直接访问是指直接使用成员;间接访问是指通过公有成员函数间接使用成员。classA{inta;public:intget(){returna;}};类中aget()类外At;t.at.get()直接访问:直接访问:访问成员a8.1.2派生成员及其访问权限保护派生时派生成员访问权限基类成员权限派生成员权限派生类内部访问方式派生类外部访问方式公有成员保护成员直接访问间接访问保护成员保护成员直接访问间接访问私有成员私有成员间接访问间接访问在派生类内部能否访问派生成员,由派生成员在基类中的原有属性
8、决定,与派生后的属性无关,即派生类内部可直接访问基类原有的非私有成员,间接访问私有成员;在派生类外部能否访问派生成员,则要看派生后的属性,即派生后仍为公有的可直接访问,而非公有的只能间接访问。8.1.2派生成员及其访问权限例8-2编程实现公有派生时对派生成员的访问。程序设计①定义基类Base三种不同访问属性的成员x(公有)、y(私有)和z(保护)。②在类Base的派生类Derived中,直接使用x和z,间接使
此文档下载收益归作者所有