static方法表示该方法不关联具体的类的对象,可以通过类名直接调用,也就是编译的前期就绑定了,不存在后期动态绑定,也就是不能实现多态。子类的非静态方法是与具体的对象绑定的,两者有着不同的含义。方法前面加上static修饰符,确实能通过编译!但是不要以为这就是多态。
class Animal {
static void doStuff(){System.out.println("a");}}
class Dog extends Animal{
static void doStuff(){System.out.println("d");}
public static void main(String[] args){
Animal d=new Dog();
d.print();
}
}
这时打印的是a,并不是d,从这个结果可以看出,并没有实现多态,它不符合覆盖表现出来的特性,不应该算是重写! |