我正在学习多态性,并且在我的超类和子类中得到了这条红线,并在我的代码中添加了注释:
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/