面试时遇到的,在此记录,以备后查!
答案:不可以。
解析:重写是为了实现多态,而多态是实例方法的动态绑定。与静态无关。当然,在子类中定义一个和父类同名的静态方法,编译器不会报错,其实这仅仅是在子类中定义了一个趋同的静态方法,与重写无关。
public class TestStaticMethodExtends {
public static void main(String[] args) {
A a = new B();
a.p() ;
}
}
class A {
public static void p() {
System.out.println("基类");
}
}
class B extends A {
public static void p() {
System.out.println("子类");
}
}
输出:基类
调用的还是自己所在类的静态方法。