在子类中调用父类的带参数的构造函数
2013-09-05 09:46
232 查看
http://tech.ddvip.com/2008-11/122750550394593.html
下面我们修改一下animal类的构造函数,增加两个参数height和weight,分别表示动物的高度和重量。代码如例2-13所示。
例2-13
双击代码全选
当我们编译这个程序时,就会出现如下错误:
那么这个错误是如何出现的呢?当我们构造fish类的对象fh时,它需要先构造animal类的对象,调用animal类的默认构造函数(即不带参数的构造函数),而在我们的程序中,animal类只有一个带参数的构造函数,在编译时,因找不到animal类的默认构造函数而出错。
因此,在构造fish类的对象时(调用fish类的构造函数时),要想办法去调用animal类的带参数的构造函数,那么,我们如何在子类中向父类的构造函数传递参数呢?可以采用如例2-14所示的方式,在构造子类时,显式地去调用父类的带参数的构造函数。
例2-14
双击代码全选
注意程序中以粗体显示的代码。在fish类的构造函数后,加一个冒号(:),然后加上父类的带参数的构造函数。这样,在子类的构造函数被调用时,系统就会去调用父类的带参数的构造函数去构造对象。这种初始化方式,还常用来对类中的常量(const)成员进行初始化,如下面的代码所示:
双击代码全选
当然,类中普通的成员变量也可以采取此种方式进行初始化,然而,这就没有必要了。
下面我们修改一下animal类的构造函数,增加两个参数height和weight,分别表示动物的高度和重量。代码如例2-13所示。
例2-13
那么这个错误是如何出现的呢?当我们构造fish类的对象fh时,它需要先构造animal类的对象,调用animal类的默认构造函数(即不带参数的构造函数),而在我们的程序中,animal类只有一个带参数的构造函数,在编译时,因找不到animal类的默认构造函数而出错。
因此,在构造fish类的对象时(调用fish类的构造函数时),要想办法去调用animal类的带参数的构造函数,那么,我们如何在子类中向父类的构造函数传递参数呢?可以采用如例2-14所示的方式,在构造子类时,显式地去调用父类的带参数的构造函数。
例2-14
相关文章推荐
- 在子类中调用父类的带参数的构造函数
- 在子类中调用父类的带参数的构造函数
- 子类中调用父类的带参数的构造函数|子类构造函数调用父类构造函数 的说明
- 父类和子类中对于构造函数的调用问题
- 子类和父类之间继承中构造函数的调用(一)
- 在子类中调用父类的带参数的构造方法
- C++子类显示调用父类的构造函数
- PHP在子类方法B调用父类的方法A时,不传参数时仍能得到方法B的名称
- 子类和父类之间继承中构造函数的调用(二)
- 子类继承父类,那么子类实例化时对象调用的是父类还是子类的构造函数?
- JavaSE8基础 多态扩展性 父类引用作为函数参数,调用所装子类对象的重写方法
- 小朋友学C++(10):子类构造函数调用父类构造函数
- C++子类如何调用父类构造函数
- 父类中调用子类构造函数实例化子类的实现
- c++ 子类调用父类有参构造函数
- c++ 在子类中向父类的构造函数传递参数的小例子.包括类中常量的初始化
- 父类和子类的调用关系:先加载父类的静态变量,然后是子类的静态变量。当new一个子类时,加载父类的非静态变量,然后是父类的构造函数,再然后是子类的非静态变量和子类的构造函数
- 注意:父类构造函数与子类构造函数的调用
- java 中关于子类调用父类构造函数问题
- [Effective JavaScript 笔记]第38条:在子类的构造函数中调用父类的构造函数