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