欢迎来到天天文库
浏览记录
ID:52165387
大小:626.50 KB
页数:96页
时间:2020-04-01
《《C++程序设计》电子教案第5章 继承和派生.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、第5章继承和派生5.1基类和派生类5.2单继承5.3多继承5.4虚基类5.1基类和派生类5.1.1派生类的定义格式5.1.2派生类的三种继承方式5.1.3访问控制5.1.4基类和派生类的关系返回首页称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。派生类可以具有基类的特性,共享基类的成员函数,使用基类的数据成员,还可以定义自己的新特性,定义自己的数据成员和成员函数。图5-1类之间的继承与派生关系5.1.1派生类的定义格式单继承的定义格式如下:class<派生类名>:<继承方式><基类名>{public://派生类新定义成员memb
2、ers;members;members;};多继承的定义格式如下:class<派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…{public://派生类新定义成员members;members;members;};例5-1:写出下列程序的执行结果。#includeclassdemo{protected:intj;public:demo(){j=0};voidadd(inti){j+=i;}voiddisplay(){cout<<"Curren
3、tvalueofjis"<4、ntvalueofjis10currentvalueofjis5currentvalueofjis0返回本节5.1.2派生类的三种继承方式在介绍公有继承(public)、私有继承(private)和保护继承(protected)的继承方式前,先看一个例子。例5-2:汽车类vehicle和其派生类小车类car的定义。classvehicle{intwheels;//车轮数floatweight;//汽车重量public:voidinitialize(intin_wheels,floatin_weight);//初始化数据成员intget_wheels();//获取车轮数flo5、atget_weight();//获取车重};classcar:vehicle//默认声明,私有继承{intpassenger_load://载客量public:voidinitialize(intin_wheels,floatin_weight,intpeople=4);intpassengers();//返回载客数};常用的三种继承方式:1.公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。2.私有继承(private)私有继承的特点是基类的公有成员和保护成员作为派生类的私有成员,并且6、不能被这个派生类的子类访问。3.保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。表5-1不同继承方式的基类和派生类特性例5-3:调用基类的公有成员示例程序。#include#includeclasspoint{public:voidinitp(floatxx=0,floatyy=0){x=xx;y=yy;}voidmove(floatxoff,floatyoff){x+=xoff;y+=yoff;}floatgetx(7、){returnx;}floatgety(){returny;}private:floatx,y;};classrectangle:publicpoint{public:voidinitr(floatx,floaty,floatw,floath){initp(x,y);//调用基类的公有成员W=w;H=h;}floatgetH(){returnH;}floatgetW(){returnW;}private:floatW,H;};voidmain(){rectanglerect;rect.initr(2,3,20,1
4、ntvalueofjis10currentvalueofjis5currentvalueofjis0返回本节5.1.2派生类的三种继承方式在介绍公有继承(public)、私有继承(private)和保护继承(protected)的继承方式前,先看一个例子。例5-2:汽车类vehicle和其派生类小车类car的定义。classvehicle{intwheels;//车轮数floatweight;//汽车重量public:voidinitialize(intin_wheels,floatin_weight);//初始化数据成员intget_wheels();//获取车轮数flo
5、atget_weight();//获取车重};classcar:vehicle//默认声明,私有继承{intpassenger_load://载客量public:voidinitialize(intin_wheels,floatin_weight,intpeople=4);intpassengers();//返回载客数};常用的三种继承方式:1.公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。2.私有继承(private)私有继承的特点是基类的公有成员和保护成员作为派生类的私有成员,并且
6、不能被这个派生类的子类访问。3.保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。表5-1不同继承方式的基类和派生类特性例5-3:调用基类的公有成员示例程序。#include#includeclasspoint{public:voidinitp(floatxx=0,floatyy=0){x=xx;y=yy;}voidmove(floatxoff,floatyoff){x+=xoff;y+=yoff;}floatgetx(
7、){returnx;}floatgety(){returny;}private:floatx,y;};classrectangle:publicpoint{public:voidinitr(floatx,floaty,floatw,floath){initp(x,y);//调用基类的公有成员W=w;H=h;}floatgetH(){returnH;}floatgetW(){returnW;}private:floatW,H;};voidmain(){rectanglerect;rect.initr(2,3,20,1
此文档下载收益归作者所有