C++中有3种基本的继承方式----公有、保护和私有。
继承的好处:减少重复代码。
1、公有继承
我们大学里面都有公共课和专业课,那么我们可以把公共课作为父类,专业课作为子类,来举个例子。我们要打印多位同学的课程,如果每位同学的公共课都差不多,那我们就不用再重复打印每个人的公共课,而是直接继承公共课这个类,拿到他的各种成员(public下)用作自己的,然后在编写一下自己的课程,就ok了,代码如下:
#include<iostream>
using namespace std;
//父类
class baseSubject
{
public:
string public_Course_1;//公共课1---大学数学
string public_Course_2;//公共课2---大学英语
string public_Course_3;//公共课2---中国近代史
void show_BaseSubject()//显示公共课程的函数
{
cout << "我的课程为:" << endl << " 公共课:" << public_Course_1 << " 、" <<
public_Course_2 << " 、" << public_Course_3 << endl;
}
};
//子类
class my_Course:public baseSubject//公有继承
{
public:
//有参构造函数
my_Course(string course1, string course2, string course3,string major1, string major2)
{
public_Course_1 = course1;
public_Course_2 = course2;
public_Course_3 = course3;
this->major_1 = major1;
this->major_2 = major2;
}
void show_MySubjecct()//显示所有课程的函数
{
show_BaseSubject();//调用父类的公有显示函数
cout << " 主修课:" << major_1 << " 、" << major_2 << endl;
}
private:
string major_1;//主修1---信号与系统
string major_2;//主修2---嵌入式系统
};
int main()
{
//创建对象my,并调用有参构造函数
my_Course my("大学数学", "大学英语", "中国近代史","信号与系统","嵌入式系统");
//调用显示所有课程的函数
my.show_MySubjecct();
system("pause");
}
输出结果如下:
多+几位同学也是一样的操作,就不重复了。
这里父类也称位基类,子类也称作派生类。
公有继承不能继承父类的的私有属性,但是可以直接把公有和保护的属性拿过来。
2、保护继承
class my_Course:protected baseSubject//保护继承
保护继承可以把父类的公有和保护下的属性全拿过来作为子类的保护属性,同样,不能继承父类的私有属性。
3、私有继承
class my_Course:private baseSubject//私有继承
私有继承可以把父类公有和保护下的属性全拿过来作为子类的私有属性,同样,不能继承父类的私有属性。
总结
?这是我从其他地方拿过来的网图,解释的比较清楚,可以参考参考。
注意
1、父类中所有非静态成员属性都会被子类继承下去 2、父类中私有成员属性是被编译器给隐藏了,因此是访问不到,但是确实被继承下去了
3、如果子类和父类中成员或者函数同名了,那么编译器默认访问的就是子类,要想访问父类的,就需要加作用域:
静态成员也是一样的,但需要注意,类内声明,内外实现!
s.Base::m_A
4、C++中也支持多继承
类X继承的父类A和B
class X : public A,public B
{
};
?
|