结论:java中的static方法不可以Override。
复习考试的过程中,和同学讨论,发现网络上相关资料较少,自己动手进行了验证。
已知类不能重写接口的静态方法。
验证过程:
准备:创建一个接口,内部有静态方法a
情形一:接口B extends F,定义非静态重名,同输入参数方法a
直观来看,这么定义确实通过了静态类型检查,但这真的是重写了方法 a吗?
我们让一个实现类实现接口B,调用B的方法,观察是否还有静态a方法:
发实现类C中,无法通过接口B访问F中定义的a方法。
同样,也无法访问F中补充定义的c方法。
现在,我们得到了一个结论:extends关键字不对接口中的静态方法生效。
那么,B是否重写了方法a呢?
添加@Override注解观察:
显然,这不是一个Override,即重写。
我们得到了第二个结论:接口中的静态方法不能被接口重写为非静态方法。
原因可能正是接口不会继承static方法。
再尝试重写为静态方法:
同样不是重写。
结论:接口中的静态方法不能重写。