关于P127~P134-练习-类和对象-继承
继承是面向对象三大特性之一
有些类与类之间存在特殊关系,例如下图中
我们发现,定义这些类的时候,下级别的成员除了拥有上一级的共性,还有自己的特性
这个时候我们就可以考虑利用继承的技术,减少重复代码
1、基本语法
例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同
接下来我们分别利用普通写法和继承写法来实现
普通实现:
#include<iostream>
using namespace std;
//普通实现页面
//Java页面
class Java
{
public:
void header()
{
cout << "首页、公开课、登录、注册……(公共头部)" << endl;
}
void footer()
{
cout << "帮助中心、交流合作、站内地图……(公共底部)" << endl;
}
void left()
{
cout << "Java、Python、C++……(公共分类列表)" << endl;
}
void content()
{
cout << "Java学科视频" << endl;
}
};
//Python页面
class Python
{
public:
void header()
{
cout << "首页、公开课、登录、注册……(公共头部)" << endl;
}
void footer()
{
cout << "帮助中心、交流合作、站内地图……(公共底部)" << endl;
}
void left()
{
cout << "Java、Python、C++……(公共分类列表)" << endl;
}
void content()
{
cout << "Python学科视频" << endl;
}
};
//C++页面
class Cpp
{
public:
void header()
{
cout << "首页、公开课、登录、注册……(公共头部)" << endl;
}
void footer()
{
cout << "帮助中心、交流合作、站内地图……(公共底部)" << endl;
}
void left()
{
cout << "Java、Python、C++……(公共分类列表)" << endl;
}
void content()
{
cout << "C++学科视频" << endl;
}
};
void test01()
{
cout << "Java下载视频页面如下:" << endl;
Java java;
java.header();
java.footer();
java.left();
java.content();
cout << "------------------------------------------"<<endl;
cout << "Python下载视频页面如下:" << endl;
Python python;
python.header();
python.footer();
python.left();
python.content();
cout << "------------------------------------------" << endl;
cout << "C++下载视频页面如下:" << endl;
Cpp cpp;
cpp.header();
cpp.footer();
cpp.left();
cpp.content();
cout << "------------------------------------------" << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
继承实现:
#include<iostream>
using namespace std;
//继承实现页面
//公共页面类
class BasePage
{
public:
void header()
{
cout << "首页、公开课、登录、注册……(公共头部)" << endl;
}
void footer()
{
cout << "帮助中心、交流合作、站内地图……(公共底部)" << endl;
}
void left()
{
cout << "Java、Python、C++……(公共分类列表)" << endl;
}
};
//Java页面
class Java :public BasePage
{
public:
void content()
{
cout << "Java学科视频" << endl;
}
};
//Python页面
class Python :public BasePage
{
public:
void content()
{