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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hellotaomi 中级黑马   /  2015-3-27 11:49  /  1240 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天我在CSDN帖子中看到一篇文章是关于子父类覆盖的,上面说:“父类被覆盖的方法不能为static。如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误。反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。
综其结论为:父类的被覆盖方法不能为static。而我在看java基础视频时,老师却说的是:静态只能覆盖静态的。
一个说静态不能被覆盖,另一说静态只能被静态覆盖,那这两者之间的结论不是矛盾了吗,所以我也想知道静态到底能不能被覆盖,谁的结论是正确的呢?

4 个回复

倒序浏览
子类覆盖父类方法:要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法
,这样编译不会通过。例如:
class Fu
{
    public static void test(){.....};
}
class  Zi extends Fu
{
   public void  test(){......};
}
回复 使用道具 举报
子类中复写的方法需要和父类重写的方法具有相同的方法名、参数列表、以及返回值类型。。子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。。
回复 使用道具 举报
可以,静态只能覆盖静态。
回复 使用道具 举报
好矛盾。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马