【C++】继承 ⑪ ( 多继承 | 多继承语法 | 多继承案例 )
  K1I6GvxBEuyy 2023年11月02日 73 0



文章目录

  • 一、多继承
  • 1、多继承基本语法
  • 2、多继承子类构造初始化
  • 3、多继承中访问父类成员
  • 二、多继承案例
  • 1、代码示例 - 简单多继承案例
  • 2、代码示例 - 多继承构造函数案例







一、多继承




1、多继承基本语法



多继承 概念 : 一个 子类 ( 派生类 ) 可以 继承 多个 父类 ( 派生类 ) ;

  • 一个类可以继承多个类的属性和方法 ;
  • 使用多继承 , 可以创建更复杂的类 , 该派生类可以组合多个基类的功能 ;


只有 C++ 语言有多继承概念 , 别的语言没有该概念 ;

  • Java 语言只能继承一个父类 , 可以实现多个接口 ;


多继承语法 :

class 子类名称 : 访问控制关键字 父类名称1, 访问控制关键字 父类名称2, ... 访问控制关键字 父类名称n
{
	// 子类内容
}
  • 访问控制关键字 :
  • public : 表示 公有继承 ;
  • protected : 表示 保护继承 ;
  • private : 表示 私有继承 ;
  • 继承的 每个 父类 都可以指定一个 访问控制关键字 ;


2、多继承子类构造初始化



调用多个父类构造函数 : 如果一个 子类 ( 派生类 ) 继承多个 父类 ( 基类 ) , 使用 初始化列表 调用 多个 父类 的构造函数 初始化 子类继承自父类的 成员变量 ;

class Child : public Parent1, public Parent2 
{
public:
	Child(int x, int y, int z): Parent1(x), Parent2(y)
	{
		this->c = z;
	}
}



多个父类构造函数调用顺序 : 多个父类 的 构造函数 的 执行顺序 , 与 定义子类时 指定的 父类顺序有关 ;



3、多继承中访问父类成员



子类 可能 继承多个 父类 , 父类 也有可能还有 父类 ,

也就是说 子类 可能需要 访问 父类的成员 , 爷爷类 的成员 ,

如果 访问 的 父类 / 爷爷类 的 成员

  • 成员变量 名称 不同 , 可以直接访问 ;
  • 成员变量 名称 相同 , 就需要使用 父类 :: 成员变量名爷爷类 :: 成员变量名 进行访问 ;





二、多继承案例




1、代码示例 - 简单多继承案例



在下面的代码中 , Child 子类 继承 Parent1 和 Parent2 父类 , 可以使用 Parent1::a 访问 父类1 中的成员变量 , 使用 Parent2::b 访问 父类2 中的成员变量 ;



代码示例 :

#include "iostream"
using namespace std;

class Parent1 {
public:
	 int a;
};

class Parent2 {
public:
	int b;
};

class Child : public Parent1, public Parent2 
{
public:
	void print()
	{
		// 类内部访问父类成员
		cout << "Parent1::a = " << Parent1::a << " , Parent2::b = " << Parent2::b << endl;
	}
};

int main() {

	Child child;
	// 打印初始状态的值
	child.print();

	child.a = 10;
	child.b = 20;
	child.print();

	child.Parent1::a = 30;
	child.Parent2::b = 40;
	child.print();

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
}

执行结果 :

Parent1::a = -858993460 , Parent2::b = -858993460
Parent1::a = 10 , Parent2::b = 20
Parent1::a = 30 , Parent2::b = 40
Press any key to continue . . .

【C++】继承 ⑪ ( 多继承 | 多继承语法 | 多继承案例 )_原力计划



2、代码示例 - 多继承构造函数案例



多继承中 , 子类的构造函数中 , 需要在 函数初始化列表 中 调用 父类的 初始化函数 , 对 继承自 父类的 成员变量 进行初始化操作 ;



代码示例 :

#include "iostream"
using namespace std;

class Parent1 {
public:
	Parent1(int x)
	{
		this->a = x;
	}
public:
	 int a;
};

class Parent2 {
public:
	Parent2(int x)
	{
		this->b = x;
	}
public:
	int b;
};

class Child : public Parent1, public Parent2 
{
public:
	Child(int x, int y, int z): Parent1(x), Parent2(y)
	{
		this->c = z;
	}
public:
	void print()
	{
		cout << "a = " << a << " , b = " << b << " , c = " << c << endl;
	}
public:
	int c;
};

int main() {

	Child child(1, 2, 3);
	// 打印初始状态的值
	child.print();

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
}

执行结果 :

a = 1 , b = 2 , c = 3
Press any key to continue . . .

【C++】继承 ⑪ ( 多继承 | 多继承语法 | 多继承案例 )_原力计划_02


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   80   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   58   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   44   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   59   0   0 C++
K1I6GvxBEuyy
作者其他文章 更多