我正在学习多态性,并且在我的超类和子类中得到了这条红线,并在我的代码中添加了注释:

    public class Animals {
  private String name;

  public Animals(String name) {
      this.name = name;
        }

  public void changeName(String name){
      this.name= name;
  }

  public String getName(){
      return this.name;  //
  }

}


这是我的子类:

public class Dog extends Animals {
    private String colour;

    public Dog(String name, String colour){
        super(name);
        this.colour = colour;
    }

    public void changeColour(String colour) {
        this.colour = colour;
    }
    public String getColour(){
        return this.colour;
    }

}


这是带有main方法的另一个脚本:

public class AnimalPolyTesting {
    public static void main(String[] args) {
        Animals puppy = new Dog("homie", "black"); // constructor Dog cannot be applied to given types;
        puppy.getName();
        (Dog) puppy.getColour(); // not a statement

    }
}


我不确定为什么会出现这些红线
编辑:该代码运行,但什么也没出来。
Edit2:修复了类。

最佳答案

您的动物课应该看起来像这样

public class Animals {
    private String name;

    public Animals(String name) {
        this.name = name;
    }

    public void changeName(String name){
        this.name= name;
    }

    public String getName(){
        return this.name;
    }

}


您遇到的问题是构造函数的返回类型为void。构造函数不应具有返回类型。其次,您的getName()方法的返回类型为void。为了使其正常工作,您需要声明返回的内容。鉴于此,我将留给您实现其余代码。

关于java - 学习多态时对错误感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35301935/

10-10 15:50