从抽象类

时间:2016-03-06 19:29:06

标签: java interface abstract-class abstract

我搜索并阅读了我的教科书,这可能是一个基本问题,但似乎无法弄明白。

我有以下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();
    }
}

3 个答案:

答案 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");
}