黑马程序员技术交流社区

标题: 有关构造函数的一个疑问 [打印本页]

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

作者: Yuan先生    时间: 2013-9-13 11:39
父类都已经没有无参的构造函数了,子类还怎么用super()调用呢,所以要手动通过super(...)指定参数调用父类的构造
作者: 郑晓飞    时间: 2013-9-13 11:42
子类的所有的构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。
子类中至少会有一个构造函数会访问父类中的构造函数。
作者: 赵凯    时间: 2013-9-13 14:51
如果一个类中有一个带参数的构造函数,就不会有空的构造函数,子类中每一个构造函数中第一行都会有一个默认的super(),访问的是父类的空参的构造函数,如果没有空的构造函数,就需要手动加上super(),可以访问带参数的构造函数
作者: 645420297    时间: 2013-9-13 20:02
“当父类中没有空参数的构造函数时,子类必须手动的通过Super语句来指定要访问父类中的构造函数”

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

亲  可能我没表诉清楚 我的意思是每一个类都会有一个默认的空参数构造函数,那怎么会出现没有空参数构造函数的类,那就更谈不上手动通过Super语句来访问父类的构造函数

作者: 大米    时间: 2013-9-14 15:14
崔一恒 发表于 2013-9-14 12:20
亲  可能我没表诉清楚 我的意思是每一个类都会有一个默认的空参数构造函数,那怎么会出现没有空参数构造 ...

系统默认空参数构造函数是有前提的,前提是没有有参的构造函数,如果有了,系统就不给默认了

作者: 崔一恒    时间: 2013-9-15 13:25
大米 发表于 2013-9-14 15:14
系统默认空参数构造函数是有前提的,前提是没有有参的构造函数,如果有了,系统就不给默认了
...

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






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2