到处都写着不能覆盖静态方法,但是当我尝试将访问说明符从 public 减少到 protected 时,它会出错。例如
public class StaticOverrideFunda {
public static void foo(){
System.out.println("Parent Foo");
}
}
public class B extends StaticOverrideFunda{
protected static void foo(){
System.out.println("Child Foo");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B.foo();
}
}
它说
不能降低继承方法的可见性
如此重要的是它遵循了最重要的规则,为什么我们说 foo 在 B 类中没有被覆盖?为什么我们说它是隐藏/阴影而不是覆盖?