继承关系中子类的构造函数
package scjp;public class Demo78 {protected int i;Demo78(int i){this.i=i;}}class B{}class C extends Demo78{}class D extends Demo78{D(){System.out.println(i);}}class E{class Demo78{}}class Demo78{}C,D会报错,请问为什么?
因为:C,D没有与超类相同的构造函数.C中没有定义构造函数所以JVM会自动添加一个空的构造函数,但是Demo78这个父类没有空的构造函数,这里又是另外一个问题:
如果一个类没有写构造函数的话JVM会给它添加一个空的构造函数,如果它写了构造函 数还会不会添加这个空的构造函数呢?不会的。
所以也就是Demo78中没有这个空的构造函数,所以C是错的。
关于D答案是一样的,虽然它的这个构造函数不是JVM添加的。
页:
[1]