A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵家阳 中级黑马   /  2013-3-7 10:30  /  1200 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵家阳 于 2013-3-8 10:08 编辑

     由于static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
     这句话是不是有错误?如果没有错误该怎么理解?

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

3 个回复

倒序浏览
这句话没有错误。
首先,先提一点,关于覆盖的原则之一:父类的静态方法被子类的同名静态方法隐藏,父类的实例方法被子类的同名实例方法覆盖。
也就是说,无论怎样,你都没办法把静态方法覆盖。
而抽象方法呢,必须要被覆写了并且实现了具体方法才能具有实际意义。
如果让static和abstract同时修饰一个方法,那岂不是相互矛盾了么,本身不能被覆写,但是又必须要被覆写了才具有实际意义。。。。
根据这个道理,可以发现,接口中的所有方法都是不能被static修饰的,因为接口的方法都是默认public abstract修饰方法的
同样,抽象函数中的抽象方法(注意,这里是说抽象方法,不包括实例方法),也不能被static修饰!

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
张豪杰 发表于 2013-3-7 10:43
这句话没有错误。
首先,先提一点,关于覆盖的原则之一:父类的静态方法被子类的同名静态方法隐藏,父类的 ...

学习了{:3_53:}
回复 使用道具 举报
因为一个static方法可以直接被类名调用 使用  而abstract方法只能被被子类复写后才能实现功能  ,所以一个抽象方法被static修饰是没有意义的   因为没有方法体  及时静态了  调用了 也实现不了任何功能   但不要认为静态方法不能被复写  静态方法可以被静态复写   只是在被子类型引用调用时是OK的  但在多态中被父类引用调用时会调用父类的方法,造成没有覆盖掉的假象,你认为是多态的一个特性就好了   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马