static可以用于修饰变量,方法,静态代码块,以及静态导入。那能不能对static方法进行重写呢?
首先看一个例子:
public class StaticTest {
public static void main(String[] args) {
M m = new N();
m.test();
}
}
class M{
public static void test(){
System.out.println("M run");
}
}
class N extends M{
public static void test(){
System.out.println("N run");
}
}
运行结果为:M run。
其实要回答这个问题,首先要明白多态的概念:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采取不同的行为方式。
由于我们知道,static是跟着类走的,所以,static方法不能进行重写。