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添加的。