【C++】继承 ① ( 面向对象特点 | 类之间的关系 | 单继承与多继承 | 继承关系特性 )

文章目录

一、面向对象相关概念


1、面向对象特点

面向对象的 4 4 4 大特点 :

  • 抽象 : 只关注对象的功能和行为 , 而不过问实现的具体细节 ;
  • 封装 : 将对象的 属性 和 方法 封装在一起 ;
  • 继承 : 新类中继承现有类的 属性 和 方法 ;
  • 多态 : 相同的操作作用于不同的对象 , 产生不同的结果 ;

2、类之间的关系

类之间的关系可以分为 三 大类 :

  • HAS-A 类关系 : 类由多个部件组成 , 类中的数据也是其它的类 ;
    • 聚合关系 Aggregation : 整体与部分之间的关系 , 部分可以脱离整体存在 ;
    • 组合关系 Composition : 整体与部分之间的关系 , 二者不可分 , 强于聚合关系 ;
  • USE-A 类关系 : 类对象之间存在关系 ;
    • 关联关系 Association : 一个类中定义了其它类的对象作为 成员变量 ;
    • 依赖关系 Dependency : 一个类的成员方法中使用了其它类的对象 作为参数 ;
  • IS-A 类关系 : 类的继承 , 接口实现 ;
    • 泛化关系 Generalization : 一般描述 和 具体描述 之间的关系 , 继承中的 父类 和 子类 就是这种关系 ;
    • 实现关系 Realization : 接口实现中的 接口 和 实现类 的关系 ;

本篇博客开始 讲解 IS-A 类关系 中的 继承关系 ( 泛化关系 Generalization ) ;

二、继承概念


1、名词说明

继承 是两个类之间的关系 ;

在C++中,使用 : 运算符来实现继承 ;

A 类 是 父类 , B 类 是 子类 ; B 类 继承 A 类 , A 类 派生 B 类 ;

  • 父类 又称为 基类 ;
  • 子类 又称为 派生类 ;

2、单继承与多继承

单继承 与 多继承 :

  • A 类 只有一个 子类 B 类 , 那么 该继承 就是 单继承 ;
  • A 类 有多个子类 B1 类 , B2 类 ... , 该 继承 是 多继承 ;

单继承

单继承是指一个类只能继承一个父类的特性和行为 ;

下面的代码中 , Child 类继承了 Parent 类的所有公有和保护成员 , 并且可以访问它们 ;

  • 注意 : Child 类不能继承 Parent 类的私有成员 ;
cpp 复制代码
class Parent {  
    // 父类成员  
};  
  
class Child : public Parent {  
    // 子类成员  
};

多继承

多继承是指一个类可以继承多个父类的特性和行为 ;

下面的代码中 , Child 类继承了 Parent1 和 Parent2 类的所有 公有 和 保护 成员 , 并且可以访问它们 ;

  • 注意 : Child 类不能继承 Parent1 和 Parent2 类的 私有成员 ;
cpp 复制代码
class Parent1 {  
    // 父类1成员  
};  
  
class Parent2 {  
    // 父类2成员  
};  
  
class Child : public Parent1, public Parent2 {  
    // 子类成员  
};

3、继承关系特性

继承关系示例 : 人类 -> 学生 -> 男学生 ;

  • 人类是 父类 , 学生 继承 人类 , 男学生 继承 学生 ;

继承关系有如下特性 :

  • 传递性 : 三者都具有 人类 的特征 , 这是 继承关系 的 " 传递性 " ;
  • 不对称性 : 不是 所有的 人类 都是 学生 , 不是所有的 学生 是 男学生 , 这是 继承关系 的 " 不对称性 " ;
相关推荐
白子寰6 分钟前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
小芒果_0110 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
gkdpjj16 分钟前
C++优选算法十 哈希表
c++·算法·散列表
王俊山IT18 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
-Even-20 分钟前
【第六章】分支语句和逻辑运算符
c++·c++ primer plus
我是谁??1 小时前
C/C++使用AddressSanitizer检测内存错误
c语言·c++
发霉的闲鱼2 小时前
MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击
c++·mfc
小c君tt2 小时前
MFC中Excel的导入以及使用步骤
c++·excel·mfc
xiaoxiao涛2 小时前
协程6 --- HOOK
c++·协程
羊小猪~~4 小时前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio