静态的方法不能被重写,他能够被子类重新声明。也就是说在子类中如果有相同名的静态方法,形参列表也相同,此时编译器编译时不报错,但是此时这个子类方法是属于重新声明方法,而不是重写它。此时静态方法是没有多态的。
多态
Shape shape = new Rectangle();
shape.getArea();
实际上在运行期的时候调用哪个方法取决于是哪个对象调用他的,规则是优先调用自己的这个getArea方法,如果自己没有这个方法就调用父类的getArea()方法
例如:
改成用static修饰后:
所以说从语义就可以看出static、final、private方法本身都是编译期绑定的(也叫前期绑定)这些方法不存在多态,他们是在还没有运行的时候,程序在编译器里面就知道该调用哪个类的哪个方法了,而其他可观察的普通方法的绑定是在运行的时候根据具体的对象决定的,因为从语义上看这些方法是可被继承的,有了多态而造成了不确定性。