有点菜鸟问题,这个,但我想不通。
这是 animal.java。我希望它成为所有动物子类的父类(super class)。它与所有子类位于同一个包中。
public class Animal {
protected static String call = "Animals make noises, but do not have a default noise, so we're just printing this instead.";
public static void sound()
{
System.out.println(call);
}
}
这是 cow.java
class Cow extends Animal {
call = "moo";
}
显然,这不会运行。但我希望能够运行 Cow.sound() 并让输出显示为“moo”。我还希望能够创建更多用自己的字符串覆盖“调用”的类。我应该怎么做?
最佳答案
您不能覆盖实例变量。您只能覆盖方法。您可以覆盖 sound
方法(一旦将其更改为实例方法,因为无法覆盖静态方法),或者您可以覆盖 sound
将调用的方法(例如 getSound()
)。然后每只动物都可以返回自己的声音:
public class Animal {
static String call = "Animals make noises, but do not have a default noise, so we're just printing this instead.";
public void sound()
{
System.out.println(getSound ());
}
public String getSound ()
{
return call;
}
}
class Cow extends Animal {
@Override
public String getSound ()
{
return "moo";
}
}
关于java - "override"子类java中的父类(super class)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33279438/