1006C++继承01

112 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

1.继承概念:

继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2.继承的作用

继承是面向对象三大特性之一

有些类与类之间存在特殊的关系,例如下图中:

1658916218322.png 当定义这些类时,第二/第三级别的成员除了拥有上一级的共性,还有自己的特性。 所以我们可以利用继承的技术,减少重复代码

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 类称为父类 或 基类

派生类中的成员,包含两大部分

一类是从基类继承过来的,一类是自己增加的成员。

从基类继承过过来的表现其共性,而新增的成员体现了其个性。