首页 > 其他 > 详细

static修饰的方法重写问题

时间:2018-01-30 21:57:07      阅读:266      评论:0      收藏:0      [点我收藏+]

静态的方法不能被重写,他能够被子类重新声明。也就是说在子类中如果有相同名的静态方法,形参列表也相同,此时编译器编译时不报错,但是此时这个子类方法是属于重新声明方法,而不是重写它。此时静态方法是没有多态的。

多态

Shape shape = new Rectangle();

shape.getArea();

 

实际上在运行期的时候调用哪个方法取决于是哪个对象调用他的,规则是优先调用自己的这个getArea方法,如果自己没有这个方法就调用父类的getArea()方法

    例如:

       技术分享图片

       技术分享图片

  改成用static修饰后:

       技术分享图片

        技术分享图片

    

所以说从语义就可以看出static、final、private方法本身都是编译期绑定的(也叫前期绑定)这些方法不存在多态,他们是在还没有运行的时候,程序在编译器里面就知道该调用哪个类的哪个方法了,而其他可观察的普通方法的绑定是在运行的时候根据具体的对象决定的,因为从语义上看这些方法是可被继承的,有了多态而造成了不确定性。

static修饰的方法重写问题

原文:https://www.cnblogs.com/weixingyuan/p/8387293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!