【问题标题】:Calling non abstract methods from an abstract class [duplicate]从抽象类调用非抽象方法[重复]
【发布时间】:2016-06-20 06:41:55
【问题描述】:

我已经搜索并阅读了我的教科书,以寻找可能是基本问题但似乎无法弄清楚的问题。

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

【问题讨论】:

  • 这回答了我的问题。我不知道“超级”关键字,所以我无法专门搜索这个。但这有很大帮助!

标签: java interface abstract-class abstract


【解决方案1】:

抽象构造函数不应该使用它们的名字来调用。在一个子类中,调用一个,你使用super(args);

所以你会改变:

public Cat(){
    Animal(0, "Unnamed");
}

public Cat(){
    super(0, "Unnamed");
}

这应该可以解决您的问题。

【讨论】:

  • 正是我需要的。修复了我的代码谢谢!
【解决方案2】:

超级类应该用关键字super来引用,而不是它的名字

 public Cat(){
        super(0, "Unnamed"); 
    }

【讨论】:

    【解决方案3】:
    public Cat(){
        super(0, "Unnamed");
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2017-05-02
      相关资源
      最近更新 更多