【发布时间】:2016-04-15 03:58:31
【问题描述】:
我正在使用 Animal 类。它的构造函数将名称作为参数。
public class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public static void main(String[] args) {
Animal cow = new Animal("Cow");
Humain pierre = new Humain("Pierre", true);
}
}
还有一个从 Animal 扩展而来的 Human 类。它的构造函数以名称和布尔值作为参数。
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
this.name = name;
this.isIntelligent = isIntelligent;
}
}
为什么我在 IDE (netbean) 中收到此错误消息:“Animal 类中的构造函数 Animal 不能应用于给定类型”?我觉得我缺少一些关于类扩展和构造函数的东西。
【问题讨论】:
-
你需要在
Humain的构造函数中调用super(name)(你可以代替this.name = name这样做,因为它会产生相同的效果)。 -
当您不显式调用超级构造函数时,将隐式调用无参数超级构造函数 (
super();)。由于基类中没有没有参数的构造函数,因此会出现编译错误。
标签: java constructor extends