Java 静态方法不能被重写
1、静态方法不能被重写,如果重写静态方法,会编译报错的
![](https://img2023.cnblogs.com/blog/2003943/202306/2003943-20230629143909161-607772110.png)
2、如果不加@Override标签,是可以的。但这样写,父类的静态方法和子类的静态方法就没有什么关系了,我将它理解成形参列表相同的重载。实际效果类似于覆盖。
![](https://img2023.cnblogs.com/blog/2003943/202306/2003943-20230629143421691-829463545.png)
3、为什么静态方法不能被重写?
根据下面的参考资料,重写是为了实现多态的,运行类型的不确定导致了动态编译时存在了运行多种方法的可能性,使得语言更加灵活。但对象会运行哪个静态方法在静态编译时就确定了,与动态编译的环节无关,所以重写静态方法并没有实现多态的目的。
参考资料:
关于静态方法为什么不能被重写的一点思考以及overload的一些坑。
『踩坑记录』Java中static方法为什么不能被重写