对静态方法进行Upcasting效果?

Akh*_*bey 0 java upcasting

当我们在base以及派生类中声明方法为static并进行upcasting时,为什么它调用基类方法.

class Base
{
    static void show(){
        System.out.println("Base class....");
    }
}
class Derive extends Base
{
    static void show(){
        System.out.println("Drive class....");
    }//method hidding.....

    public static void main(String[] args) 
    {
        Base b= new Derive();
            b.show();           
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_* D. 6

这里有几个问题需要提及:

  • 静态方法不会被子类继承而不会被重写
  • 静态方法不需要调用实例,它们需要一个类

所以,基本上,呼叫b.show();实际上意味着呼叫Base.show();