《C++Primer》:
通过继承联系在一起的类构成一种层次关系。
- 通常在层次的根部有一个基类,其他类则直接或间接地从基类继承而来,这些继承得到的类称为派生类。
- 基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有的成员。
- 在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待。对于这些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数。
不使用继承:
#include <iostream>
using namespace std;
#include <string>
//普通实现
class Java
{
public:
void header()
{
cout << "首部:首页,公开课,登录" << endl;
}
void footer()
{
cout << "底部:帮助中心,交流合作" << endl;
}
void left()
{
cout << "侧栏:python,java" << endl;
}
void content()
{
cout << "中央:java视频" << endl;
}
};
//python页面
class Python
{
public:
void header()
{
cout << "首部:首页,公开课,登录" << endl;
}
void footer()
{
cout << "底部:帮助中心,交流合作" << endl;
}
void left()
{
cout << "侧栏:python,java" << endl;
}
void content()
{
cout << "中央:python视频" << endl;
}
};
void test01()
{
cout << "Java页面布局:" << endl;
Java ja;
ja.header();
ja.footer();
ja.left();
ja.content();
cout << "-----------" << endl;
cout << "python页面布局:" << endl;
Python py;
py.header();
py.footer();
py.left();
py.content();
}
int main() {
test01();
system("pause");
return 0;
}
继承写法:
基类:
//继承实现
//公共页面类
class BasePage
{
public:
void header()
{
cout << "首部:首页,公开课,登录" << endl;
}
void footer()
{
cout << "底部:帮助中心,交流合作" << endl;
}
void left()
{
cout << "侧栏:python,java" << endl;
}
void content()
{
cout << "中央:java视频" << endl;
}
};
派生类:
//Java页面
class Java :public BasePage
{
public:
void content()
{
cout << "中央:java视频" << endl;
}
};
//Python页面
class Python :public BasePage
{
public:
void content()
{
cout << "中央:python视频" << endl;
}
};
测试代码不用改变:
void test01()//测试代码不变
{
cout << "Java页面布局:" << endl;
Java ja;
ja.header();
ja.footer();
ja.left();
ja.content();
cout << "-----------" << endl;
cout << "python页面布局:" << endl;
Python py;
py.header();
py.footer();
py.left();
py.content();
}
输出结果:
优点:减少重复代码
语法:class 子类:继承方式 父类
,子类也叫派生类,父类也叫基类