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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔一恒 中级黑马   /  2013-9-13 11:32  /  1297 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在回头再看视频,又出现个小疑问,如下
有个结论是“子类中的所有构造函数默认的都会访问父类中空参数的构造函数”。当父类中没有空参数的构造函数时,子类必须手动的通过Super语句来指定要访问父类中的构造函数;
但,我疑问的是一个类中默认都会有一个空参数的构造函数,那为甚么还要手动的通过Super语句来指定要访问父类中的构造函数呢?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

8 个回复

倒序浏览
父类都已经没有无参的构造函数了,子类还怎么用super()调用呢,所以要手动通过super(...)指定参数调用父类的构造
回复 使用道具 举报
子类的所有的构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。
子类中至少会有一个构造函数会访问父类中的构造函数。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
如果一个类中有一个带参数的构造函数,就不会有空的构造函数,子类中每一个构造函数中第一行都会有一个默认的super(),访问的是父类的空参的构造函数,如果没有空的构造函数,就需要手动加上super(),可以访问带参数的构造函数

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
“当父类中没有空参数的构造函数时,子类必须手动的通过Super语句来指定要访问父类中的构造函数”

父类中没有空参构造的时候才手动写super,意思是父类有空参构造就不用写了
回复 使用道具 举报
楼主问的好,当你编写的父类中只有带参数的构造函数时,父类中就没有了默认构造函数,如果楼主想编译通过就必须手动添加默认的构造函数,否则就需要在子类中通过super语句来访问父类中指定带参数的构造函数,希望可以帮到你哦!
回复 使用道具 举报
郑晓飞 发表于 2013-9-13 11:42
子类的所有的构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数内的第一行都有一句 ...

亲  可能我没表诉清楚 我的意思是每一个类都会有一个默认的空参数构造函数,那怎么会出现没有空参数构造函数的类,那就更谈不上手动通过Super语句来访问父类的构造函数
回复 使用道具 举报
大米 初级黑马 2013-9-14 15:14:12
8#
崔一恒 发表于 2013-9-14 12:20
亲  可能我没表诉清楚 我的意思是每一个类都会有一个默认的空参数构造函数,那怎么会出现没有空参数构造 ...

系统默认空参数构造函数是有前提的,前提是没有有参的构造函数,如果有了,系统就不给默认了
回复 使用道具 举报
大米 发表于 2013-9-14 15:14
系统默认空参数构造函数是有前提的,前提是没有有参的构造函数,如果有了,系统就不给默认了
...

嗯  非常感谢 就是只要类中有了有参数的构造函数,那系统就不会再有默认的空参数构造函数

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马