从https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html: "你不需要为你的类提供任何构造函数,但在这样做的时候必须小心.编译器自动为任何没有构造函数的类提供无参数的默认构造函数.这个默认构造函数将调用超类的无参数构造函数.在这种情况下,compiler will complain如果超类没有无参数构造函数,那么您必须验证它有."
在下面的代码中,类Goblin没有构造函数.它的超类人类也没有.
public class Humanoid {
int weight;
//public Humanoid() {
//weight = 10;
//}
}
class Goblin extends Humanoid {
char armorColor;
}
class Driver {
public static void main(String[] args) {
Goblin grug = new Goblin();
System.out.println(grug.armorColor);
boolean isGrugAGoblin = false;
isGrugAGoblin = (grug instanceof Goblin);
System.out.println(isGrugAGoblin);
}
}
我成功地编译并运行了上面的代码,尽管教程声称编译器会抱怨. 其yields 是
true
我预料到了一个错误,就像教程中所说的那样.教程错了吗?