我想扩展一个类,但是不起作用。
这是我的代码:
public class Hund {
// Attribute
private String name;
private String color;
private int age;
// Konstruktoren:
public Hund(String name, String color, int age) {
this.name = name;
this.color = color;
this.age = age;}
public void ausgeben() {
System.out.println("The dog´s race is " + name);
System.out.println("His/Her color is " + color);
System.out.println("His/Her age is " + age + " years");
}
public void bellen() {
System.out.println("Wuff Wuff");
}
public static void main(String[] args) {
Hund GermanShepherd = new Hund("GermanShepherd", "Black", 4);
GermanShepherd.ausgeben();
GermanShepherd.bellen();
}
}
我创建了一个新类,当我键入以下内容:
public class Dackel extends Hund {}
我收到错误消息:“默认构造函数未定义隐式超级构造函数Hund()。必须定义一个显式构造函数。”
我在做什么错?
答案 0 :(得分:1)
Dackel需要一个构造函数,如果您使用的是IDE,Eclipse会告诉您。
因此解决方案是:
public class Dackel extends Hund
{
public Dackel(String name, String color, int age)
{
super(name, color, age);
}
}
另一种解决方案是向Hund
类添加一个空的构造函数。
另一个提示:我也是德国人,但实际上,我会坚持一种语言。不要将类命名为德语,而将字段命名为英语。这有点混乱。宁可保持一致。
答案 1 :(得分:0)
每个java类都有默认的构造函数。如果为类实现参数化构造函数,则默认构造函数将不可用。
这里的参数化构造函数是
public Hund(String name, String color, int age) {
this.name = name;
this.color = color;
this.age = age;}
当您使用Hund JVM扩展Dackel并期望调用超类Hund的构造函数时。