正确扩展我的 class
Extend my class properly
我正在使用 class 动物。它的构造函数以名称作为参数。
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 延伸而来的 class Human。它的构造函数以名称和布尔值作为参数。
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
this.name = name;
this.isIntelligent = isIntelligent;
}
}
为什么我在 IDE (netbean) 中收到此错误消息:"Constructor Animal in class Animal cannot be applied to given type"?我觉得我遗漏了一些关于 class 扩展和构造函数的东西。
你需要在 class Human 的构造函数中调用 super。代码:
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
super(name);
this.isIntelligent = isIntelligent;
}
}
试试这个:
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
super(name);
this.isIntelligent = isIntelligent;
}
}
当你有一个带参数的构造函数时,在B中创建带参数的构造函数时,你需要为A传递一个参数给super()
示例:
class A {
public A(int x) { }
}
class B extends A {
public B(int x )
{
super(x); // need to specify the parameter for class A
//...
}
}
在你的情况下应该是:
public Humain(String name, boolean isIntelligent) {
super(name);
this.isIntelligent = isIntelligent;
}
我正在使用 class 动物。它的构造函数以名称作为参数。
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 延伸而来的 class Human。它的构造函数以名称和布尔值作为参数。
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
this.name = name;
this.isIntelligent = isIntelligent;
}
}
为什么我在 IDE (netbean) 中收到此错误消息:"Constructor Animal in class Animal cannot be applied to given type"?我觉得我遗漏了一些关于 class 扩展和构造函数的东西。
你需要在 class Human 的构造函数中调用 super。代码:
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
super(name);
this.isIntelligent = isIntelligent;
}
}
试试这个:
public class Humain extends Animal{
boolean isIntelligent;
public Humain(String name, boolean isIntelligent) {
super(name);
this.isIntelligent = isIntelligent;
}
}
当你有一个带参数的构造函数时,在B中创建带参数的构造函数时,你需要为A传递一个参数给super()
示例:
class A {
public A(int x) { }
}
class B extends A {
public B(int x )
{
super(x); // need to specify the parameter for class A
//...
}
}
在你的情况下应该是:
public Humain(String name, boolean isIntelligent) {
super(name);
this.isIntelligent = isIntelligent;
}