static method re-declare or override?

A method declared static cannot be overridden but can be re-declared. 子类可以定义与父类的静态方法同名的的静态方法,以便在子类中隐藏父类的静态方法。次重定义满足override相似的约束。 子类隐藏父类的静态方法和子类覆盖父类的实例方法,两者的却别:运行时,JVM把静态方法和所属的类绑定,把实例方法和所属的实例绑定。 class Base{ static void method{ print("base"); } }

class Sub extends base{ static void method{ print("sub"); } }

Base sub1=new Sub(); Sub sub2=new Sub(); sub1.method(); sub2.method();

output: base sub

因为sub1声明为Base类型,JVM调用Base类的method()。

results matching ""

    No results matching ""