码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 第 15章 面向对象程序设计


    15.1 概述

    面向对象程序设计的核心思想是数据抽象、继承、和动态绑定。通过使用数据抽象,我们可以将类的接口与实现分离;使用继承,可以定义相似类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以同一的方式使用它们的对象

    继承
    通过继承联系在一起的类构成了一种层次关系,通常在层次关系的根部有一个基类,其他类则直接或者间接从基类继承而来,这些继承得到的类称为派生类

    基类是共有的部分,派生类是不同类特有的

    基类将类型相关的函数与派生类不做改变直接继承的函数区分对待,对于某些函数,基类希望派生类各自定义适合自己的版本,此时基类就将这些函数声明成虚函数

    函数加上virtual就是虚函数,可以重新在派生类重新定义
    
    class Quote{
    public:
      string isbn() const;//常量成员函数
      virtual double net_price(szie_t n) const;//虚函数
    
    
    }
    

    派生类必须通过使用类派生列表明确指出它是从哪个(哪些)基类继承而来。类派生列表访问形式:

    class Bulk_Quote :public Quote ;//基类是	Quote
    {}
    

    动态绑定
    使用动态绑定,我们可以用同一段代码处理Quote和Bulk_quote派生类的对象调用它,

    double print_total(ostream &os,const Quote &item,size_t n)
    double ret = item.net_price(n);
        os << "ISBN:" << item.isbn()  //调用Quote::isbn()
           << "# sold: " << n << "total due:" << ret <<endl;
        return ret;
    } 
    

    我们既能使用基类Quote的对象调用该函数,也能使用Bulk_quote派生类的对象调用它,又因为print_total是使用引用类型调用net_price函数,实际传入的对象类型将决定执行哪个版本的函数。

    print_total(cout, basic, 20); //调用Quote::net_price      
    print_total(cout, bulk, 20);  //调用Bulk_quote::net_price
    

    15.2 定义基类和派生类

  • 相关阅读:
    使用Fastmonkey进行iosMonkey测试初探
    CenterOS部署Git私服详细过程
    第九章 哈希表 AcWing 1532. 找硬币
    Vim 笔记
    1+1<2 ?! HESIC论文解读
    点击查看详情 | 网页版微信客户管理系统如何操作试用?
    MyBatis的使用(XML映射文件)
    【深入浅出Spring6】第四期——实例化Bean和Bean的生命周期
    数据挖掘题目:根据规则模板和信息表找出R中的所有强关联规则,基于信息增益、利用判定树进行归纳分类,计算信息熵的代码
    万字+28张图带你探秘小而美的规则引擎框架LiteFlow
  • 原文地址:https://blog.csdn.net/qq_43448818/article/details/127067146
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号