11.2派生类派生类的声明格式class派生类名:继承方式基类名1,...,继承方式基类名nprivate:成员表1;I派生类增加或替代的私有成员public:成员表2;I派生类增加或替代的公有成员protected:成员表3I派生类增加或替代的保护成员1 :注:1.继承方式--private,protected,public2.若无关键字(继承方式),则默认为私有继承(private)
5 11.2 派生类 一、派生类的声明格式 class 派生类名:继承方式基类名1,. ,继承方式 基类名n { private: 成员表1; //派生类增加或替代的私有成员 public: 成员表2; //派生类增加或替代的公有成员 protected: 成员表3; //派生类增加或替代的保护成员 }; 注:1. 继承方式- private ,protected, public 2.若无关键字(继承方式),则默认为私有继承(private)
例子class Student:publicPerson[ private :intNumber;char ClassName[10];public:void Register(int number,char *classname, char *name, int age, charsex)Number=number;strcpy(ClassName,classname);voidShowStu(cout<<Number<<"lt'<<ClassName<<endlShowMe();)
例子 6 class Student : public Person { private: int Number; char ClassName[10]; public: void Register( int number, char *classname , char *name, int age, char sex ) { Number=number; strcpy(ClassName, classname); . } void ShowStu() { cout<<Number<<‘\t’<<ClassName<<endl; ShowMe(); } };
单继承与多继承单继承:一个派生类只有一个基类多继承:一个派生类同时有多个基类2classPlaneI飞机classRocketll火箭[charWing;l/机翼[charRocketEngine;l火箭发动机charUndercarriage;l/起落架public:public:voidLaunch():l发射方法voidLand()://着陆方法3;);classSpaceShuttle:publicPlane,publicRocketl/航天飞机(;
二、单继承与多继承 • 1、单继承:一个派生类只有一个基类 • 2、多继承:一个派生类同时有多个基类 7 class Plane //飞机 {char Wing; //机翼 char Undercarriage; //起落架 public: void Land(): //着陆方法 }; class Rocket //火箭 {char RocketEngine; //火箭发动机 public: void Launch(): //发射方法 }; class SpaceShuttle: public Plane, public Rocket //航天飞机 { };
三、派生类的构成1、从基类接收的成员注:除构造函数和析构函数外,必须接收所有的数据成员和成员函数派生类对基类的扩充:增加新的成员21派生类对基类成员的改造3(1).派生类通过继承方式,可以改变对基类成员的访问权限;2).可以对对基类成员函数进行重定义注:重定义时,函数名相同,参数表不论是否相同,称派生类覆盖了基类的同名成员函数(在派生类的范围内不起作用)。0
8 三、派生类的构成 1、从基类接收的成员 注:除构造函数和析构函数外,必须接收所有的数据成员和 成员函数 注:重定义时,函数名相同,参数表不论是否相同,称派 生类覆盖了基类的同名成员函数(在派生类的范围内不起 作用)。 2、派生类对基类的扩充:增加新的成员 3、派生类对基类成员的改造 (1). 派生类通过继承方式,可以改变对基类成员的访问权限; (2).可以对对基类成员函数进行重定义
山年继承继承Teacher类Person类Student类char Name[20];char Name[20];+char Name[20];+char Sex;+char Sex,tchar Sex,int Age;pint Age;intAge;void Register(char*,int, char);void Register(char *,int,char);void Register(char *, int, char);voidShowMe();voidShowMe():void ShowMe();int Number,+char Department[10];+charClassName[10];float salaryivoid Register(char*classname,新增及调整的成员void Register(char * dept,int number, char* name, intage, char sex);+float salary, char* name, intvoid ShowStu();+age, char sex);voidShowMe();
9 继 承 继 承 新增及调整的成员