- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8 继承与派
第8单元 继承与派生;引言;继承与派生问题举例;引言;8.1 基本概念;8.1 基本概念;继承:根据一个类创建一个新类的过程。继承目的就是实现代码重用;
派生:从已有类产生新类的过程就是类的派生。
派生的目的是,当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造;
基类:通常将用来派生新类的类称为基类,又称为父类;
派生类:派生出来的新类称为派生类,又称为子类。 ; 派生类是特殊的基类,基类是派生类的抽象描述。
派生类自动继承了基类的成员,但并不等同于基类,否则就没有派生的必要了。例如基类的私有成员不能被继承。; class 派生类名:继承方式 基类名
{
派生类新定义成员
};;其中,继承方式有三种:
公有继承:public
私有继承:private
保护继承:protected
缺省情况下为私有继承。
不同继承方式的影响主要体现在:
派生类成员对基类成员的访问控制;
派生类对象对基类成员的访问控制。;class Person //定义基类Person
{
public:
Person(const char* Name,int Age,char Sex);
char* GetName()
{
return(name);
}
int GetAge();
char GetSex();
void Display();
private:
char name[11];
char sex;
protected:
int age;
};;Person::Person(const char *Name,int Age,char Sex)
{
strcpy(name,Name);
age=Age;
sex=Sex;
}
int Person::GetAge()
{
return(age);
}
char Person::GetSex()
{
return(sex);
}
void Person::Display()
{
coutname:name′\t′;
coutage:age′\t′;
coutsex:sexendl;
};class Student:public Person
{
public:
Student(char* pName,int Age,char Sex,char* pId,float Score)
:Person(pName,Age,Sex)
{
strcpy(id,pId); //学生类的数据初始化
score=Score;
}
char* GetId(char* pId) //派生类的新成员
{ return(id); }
float GetScore() //派生类的新成员
{ return score; }
void Display(); //派生类的新成员
private:
char id[9];
float score;
};;void main()
{
char name[11];
coutEnter a person′s name:;
cinname;
Person p1(name,29,′m′); //基类对象
p1.Display(); //基类对象访问基类公有成员函数
char pId[9];
coutEnter a student’s name:;
cinname;
Student s1(name,19,′f′95); //派生类对象
//派生类对象访问基类成员函数
coutname:s1.GetName()′\t′;
coutid:s1.GetId(pId)′\t′;
coutage:s1.GetAge()′\t′;
coutsex:s1.GetSex()′\t′;
coutscore:s1.GetScore()endl;
}; 分析派生新类的过程可知,派生类的生成经历了三个步骤:
吸收基类成员
派生类吸收基类的大部分成员,不吸收构造函数和析构函数等
改造基类成员
由于基类成员在派生类中可能不起作用,但也被继承下来,在生成对象时占用内存空间,造成资源浪费。
(1).通过派生类定义时的继承方式来控制。
(2).定义同名成员屏蔽基类成员。
添加派生类新成员
根据需要,在派生类中添加新成员,保证派生类在功能上有
文档评论(0)