黑马程序员技术交流社区
标题:
为什么父类Base一定要无参构造器?
[打印本页]
作者:
党传才
时间:
2012-3-27 10:47
标题:
为什么父类Base一定要无参构造器?
练习16:给出以下代码,请问哪些Base类的构造器是必须在Base类中声明的?
public class Check extends Base {
public Check(int j) {
}
public Check(int j, int k) {
super(j, k);
}
}
请选择所有正确答案:
(1) Base() { }
(2) Base(int j) { }
(3) Base(int j, int k) { } ……………………..
(4) Base(int j, int k, int 1) { }
答案为13
作者:
张立江
时间:
2012-3-27 10:52
public Check(int j) {
}
里面有一句隐形的 super();
调用的是Base的无参构造函数
而Base必须定义它
作者:
lipanfeng
时间:
2012-3-27 10:58
如果类中没有带参数的构造函数或者没有写无参的构造函数,系统会默认有个无参的构造函数。所以无参的构造函数是无论如何都会有的
作者:
李井山
时间:
2012-3-27 10:58
第二个显示的调用了 super的构造方法,第一个是隐形的调用了 super()
作者:
张明星
时间:
2012-3-27 11:47
所有子类构造函数中都会去调用父类构造函数,或者super(参数)调用,或者默认调用super() 。如果父类中没有定义构造函数,那么会默认一个空参数构造函数;定义了带参数的构造函数,就不会默认初试化一个空参数的构造函数。
这个题目中,public Check(int j, int k) { super(j, k); } 这句super(j, k); 说明父类存在带参数(j,k)的构造函数,父类就不会默认空参数的构造函数
而 public Check(int j) { }中隐含super(),需要调用父类空参数构造函数; 这时候父类就必须声明无参数的构造函数了!因此(1)入选
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2