Java 为什么子类中不可能有一个与父类中具有相同签名的静态方法?

Java 为什么子类中不可能有一个与父类中具有相同签名的静态方法?,java,Java,为什么子类中不可能有一个与父类中具有相同签名的静态方法 class Parent { public final static void fun() { System.out.println("parent"); } } public class Child extends Parent { // doesn't compile! public static void fun() { System.out.prin

为什么子类中不可能有一个与父类中具有相同签名的静态方法

class Parent {
    public final static void fun() {
        System.out.println("parent");
    }
}

public class Child extends Parent {        
    // doesn't compile! 
    public static void fun() {
        System.out.println("child");
    }
}

我只是想知道为什么他们允许最后一个修饰符?我们都知道静态方法属于类而不是对象,因此不可能在子类中重写该方法。至于我,这里有多余的
final

您将该方法声明为
final
,这意味着您将其密封。
final
方法不能由子类重新定义。根据甲骨文

在方法声明中使用final关键字表示该方法不能被子类重写


您可以在子类中重新定义静态方法+@Michael的回答指出了编译失败的确切原因。这对于实例方法是正确的,但对于类方法则不是。@user3552363阅读重复的问题。对于类方法,
final
防止隐藏父类的方法。