- C++基础
- C++主页
- C++概述
- C++环境设置
- C++基本语法
- C++注释
- C++ Hello World
- C++省略命名空间
- C++常量/字面量
- C++关键字
- C++标识符
- C++数据类型
- C++数值数据类型
- C++字符数据类型
- C++布尔数据类型
- C++变量类型
- C++变量作用域
- C++多个变量
- C++基本输入/输出
- C++修饰符类型
- C++存储类
- C++运算符
- C++数字
- C++枚举
- C++引用
- C++日期和时间
- C++控制语句
- C++决策
- C++ if语句
- C++ if else语句
- C++嵌套if语句
- C++ switch语句
- C++嵌套switch语句
- C++循环类型
- C++ while循环
- C++ for循环
- C++ do while循环
- C++ foreach循环
- C++嵌套循环
- C++ break语句
- C++ continue语句
- C++ goto语句
- C++构造函数
- C++构造函数和析构函数
- C++复制构造函数
C++中的多层继承
多层继承是一种继承类型,其中一个类派生自另一个派生类,创建了一个继承链,允许它通过多个级别的类传递其属性和行为,或者从其前身继承。
实现多层继承
要实现多层继承,请以分层方式定义类,其中一个类继承自另一个类。
语法
C++中多层继承的语法:
class baseClass { //Here's a base class members }; class derivedClass1 : public baseClass { // Members of derivedClass1 }; class derivedClass2 : public derivedClass1 { // Members of derivedClass2 };
这里:
- baseClass 是其他类派生的顶级类。
- derivedClass1 是继承自baseClass的类。
- derivedClass2 继承自derivedClass1,创建了一个多层结构。
多层继承的框图
请参见下面的框图,该图演示了多层继承:
根据上图,“Shape”是基类,它派生到“Polygon”类,“Polygon”类进一步派生到“Triangle”类,以实现多层继承。
多层继承的示例
在下面的示例中,我们实现了多层继承:
#include <iostream> using namespace std; // Base class class Shape { public: void display() { cout << "This is a shape." << endl; } }; // First derived class class Polygon : public Shape { public: void sides() { cout << "A polygon has multiple sides." << endl; } }; // Second derived class class Triangle : public Polygon { public: void type() { cout << "A triangle comes under a three-sided polygon." << endl; } }; int main() { Triangle myTriangle; myTriangle.display(); // From Shape myTriangle.sides(); // From Polygon myTriangle.type(); // From Triangle return 0; }
输出
This is a shape. A polygon has multiple sides. A triangle comes under a three-sided polygon.
解释
- 首先,创建一个名为Shape的基类,它有一个公共方法display(),该方法打印“This is a shape”。
- 接下来,名为Polygon的第一个派生类继承自Shape(或基类),这意味着它可以访问Shape类的成员,包括display()。
- 第二个派生类名为Triangle,它继承自Polygon类,这允许Triangle使用display()和sides()方法。
主函数
- 创建名为myTriangle的Triangle实例。
- display()将首先通过调用Triangle类然后调用Shape类来访问display()方法,因为继承关系。
- 同样,sides()将继承自Polygon类的sides(),
- 而myTriangle.type()则继承自Triangle类的type()
广告