[code=java] public class test1 { static class a { int x = 999; int y = 999; { System.out.println("a--父类非静态方法"); } static { System.out.println("a--父类静态方法"); } public a() { System.out.println("a--执行a类无参构造方法"); print(); } public a(int x) { System.out.println("a--执行父类有参构造方法"); } public void print() { System.out.println("a--我是父类的打印方法"); } } static class b extends a { int x = 1; int y; { System.out.println("b--子类非静态方法"); } static { System.out.println("b--子类静态方法"); } public b() { System.out.println("b--执行b类无参构造方法"); //y = -1; } public b(int x) { System.out.println("b--执行子类有参构造方法"); } public void print() { System.out.println("b--在子类中调用父类的super方法"); super.print(); System.out.println("b--我是子类的打印方法"); } } public static void main(String[] args) { // TODO Auto-generated method stub int x = 0; new b(x); //a.print(); } }[/code][img=http://img.bbs.csdn.net/upload/201702/20/1487586057_405102.jpg][/img]为什么创建一个有参数的子类对象时,一定要调用到父类的无参数构造方法?当我把父类的无参数构造方法去掉时,编译器会报错,除了添加父类无参数构造方法解决,好像还可以用super这个解决,怎么解决?
4 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
你好,这个除了增加父类无参构造方法外,可以增加父类的有参数构造方法然后用super(加参数)调用,因为 在子类初始化的时候 子类的无参构造方法都会隐含着一个super()就是调用了父类的构造器。子类必须调用父类其中一个构造器。初始化父类
添加回答
举报
0/150
提交
取消