关于继承的构造函数的几个小问题 父类中定义一个有参数的构造函数,现在有个子类继承父类,是不是必须得在子类中自己定义一个有参数的super()函数呢? 那么子类中可不可以不定义构造函数呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是想说 如果父类中定义了一个构造函数并且是有参数的,那么子类继承父类的时候用不用写调用父类的super()有参函数,如果写的话是不是一定要写在子类的构造函数内呢? 我是想说 如果父类中定义了一个构造函数并且是有参数的,那么子类继承父类的时候用不用写调用父类的super()有参函数,如果写的话是不是一定要写在子类的构造函数内呢? 一定要的.子类的构造函数的第一句要么是this(XXX),要么是super(XXX).其实对于父类来说,有4种情况:1 无任何构造函数 这时实际上是有默认的(即无参数构造函数),这时子类的构造函数能够调用此默认构造函数. 子类怎么调用呢? 在构造函数里不用写super()(写上也可以),默认去调用了。2 只有一个无参构造函数 这和第一种情况一样。3 只有有参构造函数 这时因为父类有了构造函数,那就不存在默认的无参构造函数了。此时子类的构造函数的必须要有super(args)语句了。第一条语句如果不是super(args),那一定是this(***)语句。如果第一条语句既不是super(args),也不是this(xxx),那就是一个隐式的super()语句,但父类没有这个无参构造函数了,所以一定报错。4 既有无参构造函数,又有有参构造函数。 这时最方便了,子类的构造函数里即使没有super(args)或this(xxx),也不会报错了,因为如果没有this(xxx),也没有super(args), 系统会调用super(),而父类里有这个构造函数。所以许多书上告诉我们,如果设计一个将被继承的类,最好有无参构造函数。 java swing下线程同步的问题 spring多定时任务 分页查询效率为什么高? java做出百度文库的在线pdf浏览? strust 的错误 【MLDN J2SE部分--五子棋项目)】 为什么用了SSH后myeclipse的异常都不输出控制台 新手高分求教--opentaps 有人用过berkeley的内存数据库么? 很简单,但是很奇怪!!!struts 页面上的问题!! 注册页面能打开,但是表单连不到servlet 急问:iText使用ttf字体,在linux下提示找不到字体文件是怎么回事
子类的构造函数的第一句要么是this(XXX),要么是super(XXX).其实对于父类来说,有4种情况:
1 无任何构造函数
这时实际上是有默认的(即无参数构造函数),这时子类的构造函数能够调用此默认构造函数. 子类怎么调用呢? 在构造函数里不用写super()(写上也可以),默认去调用了。2 只有一个无参构造函数
这和第一种情况一样。3 只有有参构造函数
这时因为父类有了构造函数,那就不存在默认的无参构造函数了。此时子类的构造函数的必须要有super(args)语句了。第一条语句如果不是super(args),那一定是this(***)语句。如果第一条语句既不是super(args),也不是this(xxx),那就是一个隐式的super()语句,但父类没有这个无参构造函数了,所以一定报错。4 既有无参构造函数,又有有参构造函数。
这时最方便了,子类的构造函数里即使没有super(args)或this(xxx),也不会报错了,因为如果没有this(xxx),也没有super(args), 系统会调用super(),而父类里有这个构造函数。所以许多书上告诉我们,如果设计一个将被继承的类,最好有无参构造函数。