携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
1.继承概念:
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
2.继承的作用
继承是面向对象三大特性之一
有些类与类之间存在特殊的关系,例如下图中:
当定义这些类时,第二/第三级别的成员除了拥有上一级的共性,还有自己的特性。
所以我们可以利用继承的技术,减少重复代码
3.举例说明
例如我们看过的书,都有封面,扉页,而且封面都有主编、副主编,扉页都有字数、印章、印次。只有书名不一样。
接下来我们分别利用普通写法和继承的写法来实现一本书的设计,看一下继承存在的意义以及好处。
4.普通方法
//有顶天家族
class TEF
{
public:
void cover()
{
cout << "主编、副主编" << endl;
}
void flyleaf()
{
cout << "字数、印章、印次" << endl;
}
void content()
{
cout << "有顶天家族" << endl;
}
};
//夜航西行
class WWN
{
public:
void cover()
{
cout << "主编、副主编" << endl;
}
void flyleaf()
{
cout << "字数、印章、印次" << endl;
}
void title()
{
cout << "夜航西行" << endl;
}
};
//薄荷双生
class WM
{
public:
void cover()
{
cout << "主编、副主编" << endl;
}
void flyleaf()
{
cout << "字数、印章、印次" << endl;
}
void title()
{
cout << "薄荷双生" << endl;
}
};
void book()
{
//有顶天家族
cout << "有顶天家族的设计" << endl;
TEF tef;
tef.cover();
tef.flyleaf();
tef.title();
cout << "*******************" << endl;
//夜航西行
cout << "夜航西行的设计" << endl;
WWM wwm;
wwm.cover();
wwm.flyleaf();
wwm.title();
cout << "*******************" << endl;
//薄荷双生
cout << "薄荷双生的设计" << endl;
DM dm;
dm.cover();
dm.flyleaf();
dm.title();
cout << "*******************" << endl;
}
int main() {
book();
system("pause");
return 0;
}
5.继承的基础用法
class conbase
{
public:
void cover()
{
cout << "主编、副主编" << endl;
}
void flyleaf()
{
cout << "字数、印章、印次" << endl;
}
};
class TEF :public conbase
{
public:
void title()
{
cout << "有顶天家族" << endl;
}
};
class WWM :public conbase
{
public:
void title()
{
cout << "夜航西行" << endl;
}
};
class DM :public conbase
{
public:
void title()
{
cout << "薄荷双生" << endl;
}
};
void book()
{
//有顶天家族
cout << "有顶天家族的设计" << endl;
TEF tef;
tef.cover();
tef.flyleaf();
tef.title();
cout << "*******************" << endl;
//夜航西行
cout << "夜航西行的设计" << endl;
WWM wwm;
wwm.cover();
wwm.flyleaf();
wwm.title();
cout << "*******************" << endl;
//薄荷双生
cout << "薄荷双生的设计" << endl;
DM dm;
dm.cover();
dm.flyleaf();
dm.title();
cout << "*******************" << endl;
}
int main() {
book();
system("pause");
return 0;
}
输出:
有顶天家族的设计 主编、副主编 字数、印章、印次 有顶天家族
夜航西行的设计 主编、副主编 字数、印章、印次 夜航西行
薄荷双生的设计 主编、副主编 字数、印章、印次 薄荷双生
请按任意键继续. . .
6.结论
继承的好处: 可以减少重复的代码
class A : public(继承方式) B;
A 类称为子类 或 派生类
B 类称为父类 或 基类
派生类中的成员,包含两大部分:
一类是从基类继承过来的,一类是自己增加的成员。
从基类继承过过来的表现其共性,而新增的成员体现了其个性。