- 继承可以减少重复的代码。
- 继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。
- 基类=父类,派生类=子类,派生类是在继承了基类的部分成员基础上,加上自己的成员而产生的类。
继承的语法
class 子类名 : 继承方式 父类名1 , 继承方式 父类名2 , .....
{
派生类的成员
};
继承方式:
继承方式的特点
- 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
- public继承中,父类中public和protected权限到子类中不变。
- protected继承中,父类中的public和protected权限到子类中变为protected。
- private继承中,父类中的public和protected权限到子类中变为private。
继承方式的举例
code:
#include <iostream>
using namespace std;
class Father
{
public:
int m_public_a=1;
protected:
int m_protected_a=11;
private:
int m_private_a=111;
public:
void show_info()
{
cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;
}
};
class Son : public Father
{
public:
void show_info_1()
{
m_public_a = 5;
m_protected_a = 55;
cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
}
};
void test01()
{
Son s1;
s1.m_public_a = 3;
s1.show_info_1();
}
void main()
{
test01();
system("pause");
}
result:
m_public_a: 5, m_protected_a: 55
code:
#include <iostream>
using namespace std;
class Father
{
public:
int m_public_a=1;
protected:
int m_protected_a=11;
private:
int m_private_a=111;
public:
void show_info()
{
cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;
}
};
class Son: protected Father
{
public:
void show_info_1()
{
m_public_a = 5;
m_protected_a = 55;
cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
}
};
void test01()
{
Son s1;
s1.show_info_1();
}
void main()
{
test01();
system("pause");
}
result:
m_public_a: 5, m_protected_a: 55
code:
#include <iostream>
using namespace std;
class Father
{
public:
int m_public_a=1;
protected:
int m_protected_a=11;
private:
int m_private_a=111;
public:
void show_info()
{
cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;
}
};
class Son: private Father
{
public:
void show_info_1()
{
m_public_a = 5;
m_protected_a = 55;
cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
}
};
class Grandson: public Son
{
public:
void show_info_1()
{
}
};
void test01()
{
Son s1;
s1.show_info_1();
}
void main()
{
test01();
system("pause");
}
result:
m_public_a: 5, m_protected_a: 55