我搜索并阅读了我的教科书,这可能是一个基本问题,但似乎无法弄明白。
我有以下3个班级。一个抽象,一个接口和一个普通类。 在Cat类中,我想在Cat构造函数方法中调用Animal类构造函数,但是会出错。我做错了什么?
package MyPet;
public interface WalkMe {
public void walk();
}
package MyPet;
public abstract class Animal{
private int legs;
private String name;
public abstract String toString();
public Animal(int legs_in, String name_in){
setLegs(legs_in);
setName(name_in);
}
...removed the rest of code
}
package MyPet;
public class Cat extends Animal implements WalkMe{
public void walk() {
System.out.println(" ");
}
public String toString() {
}
public Cat(){
Animal(0, "Unnamed"); //THIS IS WHAT I NEED HELP WITH I am trying to call the animal Constructor
}
public static void main(String[] args) {
Cat[] cats = new Cat[4];
cast[0] = new Cat();
}
}
答案 0 :(得分:1)
超级类应该通过关键字super
来引用,而不是使用它的名称
public Cat(){
super(0, "Unnamed");
}
答案 1 :(得分:1)
抽象构造函数并不意味着使用它们的名称来调用。在子类中,要调用一个,请使用super(args);
。
所以你会改变:
public Cat(){
Animal(0, "Unnamed");
}
到
public Cat(){
super(0, "Unnamed");
}
应该解决你的问题。
答案 2 :(得分:1)
public Cat(){
super(0, "Unnamed");
}