以下代码编译是否通过?
class A{ int n; public A(int n){ System.out.println("A()...1"); } } class B extends A{ public B(){} public B(int n){ super(n); } }
分析:编译不通过,原因是子类的无参数构造方法的第一行默认为 super(),创建子类对象时,借助父类的无参数的构造方法完成父类对象的创建,但是父类没有提供无参数的构造方法,所以编译报错。
class A{ int n; public A(int n){ System.out.println("A()...1"); } } class B extends A{ public B(){} public B(int n){ super(n); } }
分析:编译不通过,原因是子类的无参数构造方法的第一行默认为 super(),创建子类对象时,借助父类的无参数的构造方法完成父类对象的创建,但是父类没有提供无参数的构造方法,所以编译报错。