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
防止隐藏父类的方法。