我正在阅读和练习以更好地理解 java 继承。当我运行下面的 Lion 类时,它打印出 0 和 null
。我认为它应该打印出参数值,即 30 和 roars
。我做错了什么?
public class Animal {
int numTeeth;
public Animal(int numTeeth) {
numTeeth = this.numTeeth;
}
public int getNumTeeth() {
return numTeeth;
}
public void setNumTeeth(int numTeeth) {
this.numTeeth = numTeeth;
}
}
public class Lion extends Animal {
String sound;
public Lion(int numTeeth, String sound)
{
super(numTeeth);
sound = this.sound;
}
public String getSound() {
return sound;
}
public void setSound(String sound) {
this.sound = sound;
}
public static void main(String[] args) {
Lion simba = new Lion(30, "roars");
System.out.println(simba.getNumTeeth());
System.out.println(simba.getSound());
}
}
最佳答案
你的现场分配是错误的方式,应该是
this.numTeeth = numTeeth;
和
this.sound = sound;
否则您将字段分配给局部变量,这没有多大意义。
关于java子类打印参数默认值而不是赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49082750/