黑马程序员技术交流社区

标题: 静态方法到底能不能被覆盖 [打印本页]

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


作者: 零点Crazy    时间: 2015-3-27 13:04
子类覆盖父类方法:要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法
,这样编译不会通过。例如:
class Fu
{
    public static void test(){.....};
}
class  Zi extends Fu
{
   public void  test(){......};
}
作者: 齐浩    时间: 2015-3-27 14:46
子类中复写的方法需要和父类重写的方法具有相同的方法名、参数列表、以及返回值类型。。子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。。
作者: 风飘逸    时间: 2015-3-27 21:14
可以,静态只能覆盖静态。
作者: 179407246    时间: 2015-3-27 21:30
好矛盾。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2