运行Sub类的main()方法,程序输出:
method of Sub
static method of Base
method of Sub
static method of Sub
引用变量sub1和sub2都引用Sub实例,java虚拟机在执行sub1.method()和sub2.method()时,都调用Sub实例的method()方法,此时,父类的method()方法被子类覆盖。
引用变量sub1被声名为Base类型,java虚拟机在执行sub1.staticMethod()时调用Base类的staticMethod()方法,可见父类Base的静态方法staticMethod()不能被覆盖。
引用变量sub2被声明为Sub类型,java虚拟机执行sub2.staticMethod()方法时,调用Sub类的staticMethod()方法,Base类的staticMethod()方法被子类的staticMethod()隐藏。