构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。

如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。

构造原则如下:

1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。

2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。

3. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数,则会调用父类的默认无参构造函数。

4. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类自己提供了无参构造函数,则会调用父类自己的无参构造函数。

5. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类只定义了自己的有参构造函数,则会出错(如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法)。

6. 如果子类调用父类带参数的构造方法,需要用初始化父类成员对象的方式,比如:

c++ 构造函数 继承相关推荐

  1. js继承之借用构造函数继承

    2018.5.27 今天本人又在查关于继承的问题,重新温习了一遍书,发现之前举的例子实际上不太清晰,故做调整. 我的上一篇文章介绍了,原型链继承模式.原型链继承虽然很强大,但是单纯的原型链模式并不能很 ...

  2. JavaScript面向对象——理解构造函数继承(类继承)

    JavaScript面向对象--理解构造函数继承(类继承) 构造函数式继承(类继承) function SuperClass(id) {// 引用类型公有属性this.books = ['JavaSc ...

  3. 23~49(构造函数+继承+类的本质+ES5中的新增方法)

    1 构造函数和原型 1.1 概述 在典型的OOP的语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没用引入类的概念. ES6,全称ECMAScript ...

  4. js继承-构造函数继承

    1.构造函数继承 <script>//1. 创建父类构造函数Parentfunction Parent(name) {this.name = name; // 实例基本属性 (该属性,强调 ...

  5. JS中对象的四种继承方式:class继承、原型链继承、构造函数继承、组合继承(构造函数和原型链继承的结合)

    前言 才发现之前没有对JavaScript中的继承做过总结,不过看得到是不少,接下来就对这几种继承方式做一下总结. class继承 class继承是ES6引入的标准的继承方式. ES6引入了class ...

  6. 【JS继承】JS继承之构造函数继承

    自我介绍:大家好,我是吉帅振的网络日志:微信公众号:吉帅振的网络日志:前端开发工程师,工作4年,去过上海.北京,经历创业公司,进过大厂,现在郑州敲代码. JS继承专栏 1[JS继承]什么是JS继承? ...

  7. 记录--JS精粹,原型链继承和构造函数继承的 “毛病”

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 先从面向对象讲起,本瓜认为:面向对象编程,它的最大能力就是:复用! 咱常说,面向对象三大特点,封装.继承.多态. 这三个特点,以" ...

  8. 初学JavaScript:原型继承/盗用构造函数继承/组合继承/寄生式继承/原型式继承/寄生组合式继承

    文章目录 继承 简介 1.原型链继承 默认原型 判断原型与实例间是否为继承关系 原型继承中的方法 原型链的破坏 原型继承的问题 2.盗用构造函数继承 简介 盗用构造函数继承的问题 3.组合继承 简介 ...

  9. javascript构造函数继承

    一.传统prototy继承 function Parent() {this.name = "thisIsName"; } Parent.prototype.sayName = fu ...

  10. 委托构造函数继承构造函数

    委托构造函数 委托构造函数的引入 小明和李华给外国友人写信从高中写到了考研写累了,突然想唱歌,为了方便这哥俩唱歌,咱写了个唱歌类给他们.这哥俩唱的不好,就限制他俩只能唱三句.因为有1~3句的选择,就写 ...

最新文章

  1. input禁止后怎么实现复制功能_(变强、变秃)Java从零开始之JQuery购物车功能实操...
  2. java命令--jmap命令使用
  3. mysql 数据库安装命令_教你MySQL数据库的编译安装以及命令详解(5.7版本)
  4. 【转】不用软件,解压Win8/Win8.1的install.wim文件
  5. navicat创建计算列_Tableau Part 9 计算字段amp;粒度聚合比率amp;表计算
  6. 非法操作 login.php,阅文游戏中心 h5游戏接入wiki
  7. Qt工作笔记-使用QGraphicsItem加载图片并实现碰撞
  8. vue设置textarea最大字数_【Vue 学习】 Vue常用系统指令
  9. python 数学基础_Python3数学基础 - 随笔分类 - 既生喻何生亮 - 博客园
  10. NOR Flash的原理与操作
  11. Distribution download cancelled. Using distribution from 'https://services.gradle.org/distributions/
  12. 汇编语言8086笔记
  13. 结构张量 matlab 图像,图像处理中 结构张量(structure tensor)
  14. 手把手教学弟用js写的打砖块游戏,学弟乐哉~ 附(思路注释+源码)
  15. 空间搜索(圆范围)中Geohash编码方案和格网编码方案对比探讨
  16. Python二进制内容转为中文(二进制转中文)
  17. 麒麟操作系统iso文件中的img文件的解压与压缩
  18. STM32F1xx_StdPeriph_Driver——SPI
  19. 实习生、应届生、三方协议、实习协议、劳动合同的区别
  20. 【优化算法】象群游牧优化算法(EHO)【含Matlab源码 1080期】

热门文章

  1. 安卓Android ViewModel 超简单实例
  2. php文件修改后 需要重启apache 才能生效
  3. 树莓派小车手机app控制(1)
  4. C语言左移超过31的处理方法
  5. 43. Extending the DPDK
  6. vue项目中跨域解决方案
  7. mac配置appium+python+ios教程
  8. Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces-题解
  9. APM飞控油门差动调整方向
  10. 关于python构造函数的重载