码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C++】继承 ① ( 面向对象特点 | 类之间的关系 | 单继承与多继承 | 继承关系特性 )


    文章目录

    • 一、面向对象相关概念
      • 1、面向对象特点
      • 2、类之间的关系
    • 二、继承概念
      • 1、名词说明
      • 2、单继承与多继承
        • 单继承
        • 多继承
      • 3、继承关系特性





    一、面向对象相关概念




    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 类的私有成员 ;
    class Parent {  
        // 父类成员  
    };  
      
    class Child : public Parent {  
        // 子类成员  
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    多继承


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

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

    • 注意 : Child 类不能继承 Parent1 和 Parent2 类的 私有成员 ;
    class Parent1 {  
        // 父类1成员  
    };  
      
    class Parent2 {  
        // 父类2成员  
    };  
      
    class Child : public Parent1, public Parent2 {  
        // 子类成员  
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、继承关系特性


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

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

    继承关系有如下特性 :

    • 传递性 : 三者都具有 人类 的特征 , 这是 继承关系 的 " 传递性 " ;
    • 不对称性 : 不是 所有的 人类 都是 学生 , 不是所有的 学生 是 男学生 , 这是 继承关系 的 " 不对称性 " ;
  • 相关阅读:
    Android无障碍自动化结合opencv实现支付宝能量自动收集
    【Zabbix监控二】之zabbix自定义监控内容案例(自动发现、自动注册)
    asp毕业设计——基于asp+sqlserver的WEB社区论坛设计与实现(毕业论文+程序源码)——社区论坛
    Spring MVC - 相关内容1
    Vue+Leaflet.PM插件实现创建和编辑几何图形(点、线、面、圆等)
    入门者必看-Ansible:自动化运维的利器
    RCE极限挑战
    Rust 中的 Pin UnPin Async Await 实现机制
    [附源码]Python计算机毕业设计SSM科技项目在线评审系统(程序+LW)
    Pinpoint--基础--02--架构设计
  • 原文地址:https://blog.csdn.net/han1202012/article/details/133772248
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号