java 静态方法可以覆盖吗

覆盖(override)是在继承+多态的前提下的概念。Java中的静态方法不多态,所以不涉及覆盖,无论静态方法是在基类还是派生类上。 
从结果看,JVM中有4条invoke-*指令:invokevirtual、invokeinterface、invokestatic、invokespecial,其中前两条指令有多态语义而后两条没有。 
静态方法是用invokestatic来调用的,编译的时候就确定好具体用那个版本的方法了。private的成员方法是用invokespecial调用的,同样不多态。被调用的变量是接口的引用时,调用方法是用invokeinterface。其余的情况的成员方法用invokevirtual。

你可能感兴趣的:(Java)