为什么说静态方法不能被继承?

时间:2014-11-21 05:37:56

标签: java

我能够运行以下代码:

class A
{
    public static void display()
    {
        System.out.println("Inside static method of superclass");
    }
}

class B extends A
{
    public void show()
    {
        display();
    }
}

public class staticMethodInheritance {
    public static void main(String[] args) {
        B b = new B();
        b.display();
    }
}

现在我能够从类B的实例访问方法display(),然后为什么说静态方法不能被继承。如果我在类B中声明一个方法显示,那么就会说隐藏了超类中的方法,并且调用了子类中的方法,然后再次这不是我们覆盖方法时所需的行为。

1 个答案:

答案 0 :(得分:0)

inherited static (class) methods and inherited non-static (instance)方法的唯一区别在于,当您编写具有相同签名的新静态方法时,the old static method is just hidden, not overridden.

静态方法是继承的,但不能覆盖它们可以重新定义。