主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C++

C++ 基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

C++ 字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

C++ 函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

C++ 面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

C++ 高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

C++ 多层次继承


上一章 下一章

多层次继承是一种继承类型,在这种继承中,一个类从另一个派生类中派生出来,形成一个继承链,允许它通过多个级别的类传递其属性和行为或从其前身继承。

实现多层次继承

要实现多层次继承,请以层级方式定义类,其中一个类从另一个类继承。

语法

多层次继承在 C++ 中的语法如下:

class baseClass {
   // 这里是基类成员
};

class derivedClass1 : public baseClass {
   // derivedClass1 的成员
};

class derivedClass2 : public derivedClass1 {
   // derivedClass2 的成员
};

这里,

  • baseClass 是顶层类,其他类从中派生。
  • derivedClass1 是从 baseClass 派生出的类。
  • derivedClass2 从 derivedClass1 派生,创建了一个多层次结构。

多层次继承的框图

参见下面的框图,展示多层次继承:

C++ Multilevel Inheritance

C++ 多层次继承 根据上述框图,“Shape” 是基类,并且它派生到了 “Polygon” 类,而 “Polygon” 类进一步派生到了 “Triangle” 类,以实现多层次继承。

多层次继承示例

在下面的例子中,我们正在实现多层次继承:

#include <iostream>
using namespace std;

// 基类
class Shape {
   public:
      void display() {
         cout << "这是一个形状。" << endl;
      }
};

// 第一个派生类
class Polygon : public Shape {
   public:
      void sides() {
         cout << "一个多边形有多条边。" << endl;
      }
};

// 第二个派生类
class Triangle : public Polygon {
   public:
      void type() {
         cout << "三角形属于三边多边形。" << endl;
      }
};

int main() {
   Triangle myTriangle;

   myTriangle.display();  // 从 Shape
   myTriangle.sides();    // 从 Polygon
   myTriangle.type();     // 从 Triangle

   return 0;
}

输出

这是一个形状。
一个多边形有多条边。
三角形属于三边多边形。

解释

首先,创建了一个名为 Shape 的基类,它有一个名为 display() 的公有方法,打印出 "这是一个形状。" 接着,第一个派生类名为 Polygon,从 Shape (或基类)继承,意味着它可以访问 Shape 类的成员,包括 display() 方法。 第二个派生类名为 Triangle,从 Polygon 类继承,使得 Triangle 类可以使用 display() 和 sides() 方法。 主函数 创建了一个名为 myTriangle 的 Triangle 实例。 display() 会先通过调用 Triangle 类进而访问 Shape 类中的 display() 方法,这是因为继承的关系。 同样地,sides() 会从 Polygon 类继承 sides() 方法, 而 myTriangle.type() 从 Triangle 类的 type() 方法。

上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图