网易云课堂(Boolan)C++ 第三周笔记

1、组合与继承

组合关系:不破坏封装,整体类与局部类之间松耦合,彼此相对独立。具有较好的可扩展性。支持动态组合。在运行时,整体对象可以选择不同类型的局部对象。整体类可以对局部类进行包装,封装局部类的接口,提供新的接口。整体类不能自动获得和局部类同样的接口。创建整体类的对象时,需要创建所有局部类的对象。

继承关系:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性。支持扩展,但是往往以增加系统结构的复杂度为代价。不支持动态继承。在运行时,子类无法选择不同的父类。子类不能改变父类的接口。子类能自动继承父类的接口。创建子类的对象时,无须创建父类的对象。

2、虚函数与多态

    当对某个虚函数通过指针或引用调用时,编译器产生的代码直到运行时才能确定应该调用哪个版本的函数。被调用的函数是与绑定到指针或引用上的对象的动态类型相匹配的那一个。

    OOP的核心思想是多态性。多态性这个词源自希腊语,其含义是“多种形式”。我们把具有继承关系的多个类型称为多态类型,因为我们能使用这些类型的“多种形式”而无需在意它们的差异。引用或指针的静态类型与动态类型不同这一事实正是C++语言支持多态性的根本所在。

    当我们使用基类的引用或指针调用基类中定义的一个函数时,我们并不知道该函数真正作用的对象是什么类型,因为它可能是一个基类的对象也可能是一个派生类的对象。如果该函数是虚函数,则直到运行时才会决定到底执行哪个版本,判断的依据是引用或指针所绑定的对象的真实类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,748评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,899评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,936评论 0 62
  • 7月9日星期日(阴)亲子日记第36天 今天星期日我在家休息,儿子今天不太精神用体温表量了一下有点发烧。去卫生室拿...
    四年级五班张家豪妈妈阅读 1,787评论 0 3
  • 你用欢笑来掩饰你的悲伤, 夜未央,你早已泪两行; 人群的喧闹也遮挡不住你的孤独, 来来回回走那些没有尽头的路。 我...
    星漫阅读 2,755评论 1 2