A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王丽达 中级黑马   /  2013-7-16 17:36  /  1997 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-16 21:12 编辑

父类的无参构造函数存在的作用,子类一定要调用父类构造函数吗?理解不清

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

13 个回复

倒序浏览
当一个类继承另外一个类的时候,当子类创建对象时子类会自动调用super();也就是自动调用父类的无参构造函数,要想调用父类有参的构造函数只能自己调用super();然后再传参数;

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
一定要!
因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。所以子类在对象初始化时,要先访问一下父类中的构造函数。
父类中没有空参数的构造函数时,子类必须手动通过super()来指定访问父类中的构造函数。
回复 使用道具 举报
要的。子类继承后如果不调用,其实是默认调用了父类的无参构造。调用有参的是用关键字super调用。
回复 使用道具 举报
子类一定会调用父类的构造函数的,当调用父类的无参构造函数的时候,默认的会有super().
当调用父类的又参的构造函数的时候,要用手动调用super(参数)调用。
希望对你有所帮助!
回复 使用道具 举报
因为子类继承了父类,获取到了父类中内容,所以在使用父类内容之前,
要先看父类是如何对自己的内容进行初始化的。
回复 使用道具 举报
一定会有一个子类的构造函数调用父类的无参构造函数。
回复 使用道具 举报
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。子类不一定要继承父类的构造函数,可以根据需要重写

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
当一个子类继承父类的时候就是相当于已经把父类所有的代码 在子类从新写了一遍了,  有没有参数和是不是构造方法 都已经不重要了。至于能不能实现 。 掉不掉用。 都已经在内存里出现了   ,  如果你不想让他实现或者是调用 或者是你讨厌父类的构造函数, 可以覆盖

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
当一个子类继承父类的时候就是相当于已经把父类所有的代码 在子类从新写了一遍了,  有没有参数和是不是构造方法 都已经不重要了。至于能不能实现 。 掉不掉用。 都已经在内存里出现了   ,  如果你不想让他实现或者是调用 或者是你讨厌父类的构造函数, 可以覆盖
回复 使用道具 举报
masterV 来自手机 中级黑马 2013-7-17 05:00:55
11#
清心玉质 发表于 2013-7-16 20:36
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起 ...

构造函数可以被继承吗?
回复 使用道具 举报
魏先勇 发表于 2013-7-17 05:00
构造函数可以被继承吗?

当子类继承父类时,子类包括父类的所有成员(包括变量、函数、构造函数,private成员被隐藏而不能访问),子类同时继承了父类的接口,即所有可以给父类对象的消息同时也可以发送给子类对象。
子类的所有构造函数默认都会访问父类中的空参数的构造函数,因为子类每一个构造函数内第一行都有一句隐式super();当父类中没有空参数的构造函数时,子类必须手动通过super语句来指定要访问父类中的构造函数。
回复 使用道具 举报
清心玉质 发表于 2013-7-17 12:55
当子类继承父类时,子类包括父类的所有成员(包括变量、函数、构造函数,private成员被隐藏而不能访问) ...

嗯,那应该说是调用父类的构造方法吧,,如果子类继承了父类的方法,那么子类便应该能够重写父类的方法,我的理解对么?
回复 使用道具 举报
构造方法,方法名,必须和类名一摸一样
构造方法,没有返回值,不需要写void,也不需要写return
构造方法,只在建立对象的时候,运行一次,仅仅一次 new Person()
只要是类,是class定义的类,就有构造方法
不写,会有默认的,是一个空参数的构造方法
用于给对象进行初始化,换句话说,构造方法,可以用在,建立对象时候,给对象中的成员变量赋值
对象加载成员变量,对象才会去调用构造方法
子类构造方法,都要去访问父类中无参数的构造方法,这是默认的
无论子类的构造方法,有几个,都会默认的访问父类空参数的构造方法
子类的构造方法之间的调用用的this,必须第一行,第一行是super还是this
只要保证子类构造方法,直接还是间接的可以访问到父类的构造方法就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马