C++系列-继承方式

继承方式

  • 继承的语法

  • 继承方式:

  • 继承可以减少重复的代码。

  • 继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。

  • 基类=父类,派生类=子类,派生类是在继承了基类的部分成员基础上,加上自己的成员而产生的类。


继承的语法

cpp 复制代码
class 子类名 : 继承方式 父类名1 , 继承方式 父类名2 , ..... 
{
	派生类的成员
};

继承方式:

  • public
  • protected
  • private

继承方式的特点

  • 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
  • public继承中,父类中public和protected权限到子类中不变。
  • protected继承中,父类中的public和protected权限到子类中变为protected。
  • private继承中,父类中的public和protected权限到子类中变为private。

继承方式的举例

  • public继承
cpp 复制代码
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;
			//m_private_a = 555;		// 父类中的私有成员到子类中无法访问
		}
	};
	
	void test01()
	{
		Son s1;
		s1.m_public_a = 3;
		// s1.m_protected_a = 333;		//父类中的protected权限的成员到子类中仍是protected, 在类中可以访问,类外不行
		s1.show_info_1();
	
	}
	void main()
	{	
		test01();
		system("pause");
	}
result:
	m_public_a: 5, m_protected_a: 55
  • protected继承
cpp 复制代码
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;
			//m_private_a = 555;		// 父类中的私有成员到子类中无法访问
		}
	};
	
	void test01()
	{
		Son s1;
		//s1.m_public_a = 3;			// 父类中的public权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行
		// s1.m_protected_a = 333;		// 父类中的protected权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行
		s1.show_info_1();
	
	}
	void main()
	{	
		test01();
		system("pause");
	}
result:
	m_public_a: 5, m_protected_a: 55

  • private继承
cpp 复制代码
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;
			//m_private_a = 555;		// 父类中的私有成员到子类中无法访问
		}
	};
	class Grandson: public Son
	{
	public:
		void show_info_1()
		{
			//m_public_a = 5;			// 在Son类中,因为是以private方式继承,原Father中的public和protected权限的成员都变成了private,所以当Grandson再使用public方式继承时,无法访问。
			//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;			// 父类中的public权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行
		//s1.m_protected_a = 333;		// 父类中的protected权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行
		s1.show_info_1();
	
	}
	void main()
	{	
		test01();
		system("pause");
	}
result:
	m_public_a: 5, m_protected_a: 55
相关推荐
挽月0017 分钟前
C++单例模式
开发语言·c++·单例模式
loveLifeLoveCoding11 分钟前
Java List sort() 排序
java·开发语言
机器视觉知识推荐、就业指导15 分钟前
Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)
c++·qt·tcp/ip
草履虫·18 分钟前
【Java集合】LinkedList
java
AngeliaXue20 分钟前
Java集合(List篇)
java·开发语言·list·集合
世俗ˊ20 分钟前
Java中ArrayList和LinkedList的比较
java·开发语言
Mercury Random21 分钟前
Qwen 个人笔记
android·笔记
zhouyiddd25 分钟前
Maven Helper 插件
java·maven·intellij idea
苏苏码不动了28 分钟前
Android 如何使用jdk命令给应用/APK重新签名。
android
wx2004110229 分钟前
Codeforces Round 973 (Div. 2) - D题
数据结构·c++·算法