黑马程序员技术交流社区
标题:
关于子父类的构造方法问题
[打印本页]
作者:
yang1352546
时间:
2014-5-27 21:41
标题:
关于子父类的构造方法问题
本帖最后由 yang1352546 于 2014-5-29 20:30 编辑
子类中所有的构造,无论重载几个,每一个的第一行默认super(),访问父类空参数的构造方法,如果父类有一个带参构造方,没有空参构造方法,这种情况怎么访问父类的构造方法。可以不访问父类空参的函数么。
作者:
成小龙
时间:
2014-5-27 21:50
调用父类构造方法super.
作者:
葛晓东
时间:
2014-5-27 22:01
子类中所有的构造,无论重载几个,每一个的第一行默认super(),访问父类空参数的构造方法
如果父类,没有空参数的构造方法,子类的构造方法,没有写super(),直接编译失败
作者:
927233671
时间:
2014-5-27 22:07
本帖最后由 927233671 于 2014-5-27 22:15 编辑
如果父类中没有空参数的构造方法,只声明了有参的构造方法(没有无参构造方法),那么子类要指定访问父类的有参构造方法,如果不指定,会报错;因为父类没有无参构造方法,但是子类有隐式的super();所以会报错,总结一句话,父类如果隐去,那么子类也隐去,父类不隐(声明了有参,未声明无参),那么子类也不隐了,要指定有参的。
class Fu
{
Fu(int x)
{
System.out.println("Fu run");
}
}
class Zi extends Fu
{
Zi()
{
super(4);//必须写这行,不然会报错;
System.out.println("Zi run");
}
}
class Demo1
{
public static void main(String[] args)
{
Zi z=new Zi();
}
}
复制代码
作者:
武维京
时间:
2014-5-27 22:13
首先,子类不会继承父类的构造方法,也不能被复写,但是子类在实例化对象时,
如果子类的构造方法没有显示调用父类的方法,则将自动调用父类默认构造方法。
如果父类没有不带参数的构造方法,且子类的构造方法中又没显示调用父类其他构造方法,
则Java编译器将报告错误。所以子类使用父类的构造方法是通过super关键字实现的。
作者:
战狼
时间:
2014-5-27 23:00
super是与父类中的构造方法一一对应的,有参数的就调用有参数的,无参数代表默认,如果父类中无无参数的方法,而子类中调用有参数的方法,编译失败,用集成开发工具的话,会直接报错。
作者:
执笔梦
时间:
2014-5-29 21:53
如果不指定,会报错.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2