【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、继承关系特性

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

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

继承关系有如下特性 :

  • 传递性 : 三者都具有 人类 的特征 , 这是 继承关系 的 " 传递性 " ;
  • 不对称性 : 不是 所有的 人类 都是 学生 , 不是所有的 学生 是 男学生 , 这是 继承关系 的 " 不对称性 " ;
相关推荐
Ustinian_31043 分钟前
【C/C++】For 循环展开与性能优化【附代码讲解】
c语言·开发语言·c++
MZ_ZXD0016 小时前
springboot汽车租赁服务管理系统-计算机毕业设计源码58196
java·c++·spring boot·python·django·flask·php
岁忧8 小时前
(nice!!!)(LeetCode 每日一题) 679. 24 点游戏 (深度优先搜索)
java·c++·leetcode·游戏·go·深度优先
小欣加油8 小时前
leetcode 3 无重复字符的最长子串
c++·算法·leetcode
zylyehuo11 小时前
C++基础编程
c++
tt55555555555512 小时前
C/C++嵌入式笔试核心考点精解
c语言·开发语言·c++
lg_cool_12 小时前
Qt 中最经典、最常用的多线程通信场景
c++·qt6.3
科大饭桶13 小时前
C++入门自学Day14-- Stack和Queue的自实现(适配器)
c语言·开发语言·数据结构·c++·容器
tt55555555555513 小时前
字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
c++·算法·矩阵
rainFFrain14 小时前
Boost搜索引擎项目(详细思路版)
网络·c++·http·搜索引擎