static的方法到底能不能覆盖?
1.定义StaticExt类
package com.freelunch.test;
public class StaticExt {
public static void test()
{
System.out.println("father");
}
}
2.定义StaticExt 的子类StaticExtSon
package com.freelunch.test;
public class StaticExtSon extends StaticExt{
public static void test()
{
System.out.println("son");
}
public static void main(String[] args) {
StaticExtSon.test(); // "son"
new StaticExtSon().test(); // "son"
StaticExt f = new StaticExtSon();
f.test();// "father"
}
}
输出:
son
son
father
3. 结论
静态方法只与定义时所在的类相关,在编译期就已经绑定到某个类。可以继承,但不能在子类中被同名方法覆盖。
由定义引用的类型决定调用的是父类还是子类的方法。