来自 https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html: “你不必为你的类提供任何构造函数,但这样做时必须小心。编译器会自动为任何没有构造函数的类提供无参默认构造函数。这个默认构造函数将调用无参构造函数超类的。在这种情况下,如果超类没有无参构造函数,编译器会抱怨,因此您必须验证它是否具有。”
在下面的代码中,类 Goblin 没有构造函数。它的超类 Humanoid 也没有。
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);
}
}
尽管教程声称编译器会抱怨,但我成功编译并运行了上面的代码。 输出是
true
我预计会出现错误,就像教程声称的那样。教程是不是错了?