本文主要是介绍面向对象的另一大特性《继承》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C++是一门面向对象的编程语言,而面向对象的三大特性分别是 封装、继承、多态
今天就来谈谈面向对象中的另一个特性--------继承
继承和现实中的继承类似,在现实生活中儿子会具备父亲的一些特征,而且可能会继承父亲的财产
儿子与父亲的关系图如下图所示
在编程中将父亲定义为基类(或者定义为父类),儿子定义为子类,而C++中就是用继承来表示这种基类与子类的关系
我再用一个与程序员息息相关的例子来描述继承
然后通过代码进一步理解继承,我在前面的博客中写过一个Student类,这次将通过学生类派生出一个Student1类
Student类的实现代码可以参考http://blog.csdn.net/u010105970/article/details/25637493
在使用继承前Student类的代码
#include <iostream>
#include <String>using namespace std;class Student//定义一个Student类
{
public://构造函数Student(int n, string nam, char s){num = n;name = nam;sex = s;}//显示学生信息void show(){cout<<"num = "<<num<<endl;cout<<"name = "<<name<<endl;cout<<"sex = "<<sex<<endl<<endl;}//数据成员的类型为保护类型
protected:int num;//学号string name;//姓名char sex;//性别
};void main()
{//定义一个Student的对象stud1Student stud1(20010, "Hexing", 'm');//stud1调用成员函数show()实现学生信息的输出stud1.show();system("pause");
}
程序执行结果
Student1继承Student后的代码
#include <iostream>
#include <String>using namespace std;class Student//定义一个Student类
{
public://构造函数Student(int n, string nam, char s){num = n;name = nam;sex = s;}//显示学生信息void show(){cout<<"num = "<<num<<endl;cout<<"name = "<<name<<endl;cout<<"sex = "<<sex<<endl<<endl;}//数据成员的类型为保护类型
protected:int num;//学号string name;//姓名char sex;//性别
};//Student1以公有继承(public)的方式继承Student
class Student1 : public Student
{
public://构造函数中使用初始化表Student1(int n, string nam, char s, int a, string ad):Student(n, nam, s){age = a;addr = ad;}//显示学生信息void show1(){cout<<"num = "<<num<<endl;cout<<"name = "<<name<<endl;cout<<"sex = "<<sex<<endl;cout<<"age = "<<age<<endl;cout<<"addr = "<<addr<<endl<<endl;}//增加了新的数据成员
private:int age;//年龄string addr;//地址
};void main()
{//定义一个Student1类的对象studStudent1 stud1(10010, "Wangli", 'f', 19, "115 Beijing Road, Shanghai");//定义一个Student1类的对象stud2Student1 stud2(10011, "Zhangfun", 'm', 21, "213 Shanghai Road, Beijing");//定义一个Student类的对象stud3Student stud3(20010, "Hexing", 'm');stud1.show1();//调用成员函数,显示学生信息stud2.show();//因为对象stud2的类继承自Student,所以stud2可以使用Student类的成员函数stud3.show();//调用成员函数,显示学生信息system("pause");
}
执行结果
说明:
上面的代码中父类Student派生出子类Student1,所以子类Student1继承了父类Student的全部属性
子类可以访问父类的数据成员和成员函数
而访问限制受到了继承方式和访问级别的影响
可以通过查看下面的表格查看继承方式和访问级别对访问成员的影响
这篇关于面向对象的另一大特性《继承》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!