java - "override"子类java中的父类(super class)成员

标签 java overriding subclass

有点菜鸟问题,这个,但我想不通。

这是 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/

相关文章:

java - 我的报告日志在范围报告中的不同类别中变得混合

Java KeyBindings 在几秒钟后停止工作

swift - 您只能将计算变量与 setter 和 getter 一起使用来覆盖父类(super class)的存储属性

java - 在 Java 中克隆子类

java - 当 MySubClass 扩展 MyClass 时,使用在 MyClass 中返回 MyClass 对象的方法

java - -Xlint :all and maven 有问题

java - join() 方法在多线程中如何工作

java - 防止覆盖 Neo4J 图形数据库中的数据

PHP - 用不同数量的参数覆盖函数

ios - Swift 对类进行子类化的问题