qq_23908539
2015-08-12 00:41
采纳率: 87.5%
浏览 4.6k
已采纳

java中如果重载函数前不加@Override会怎么样?

比如重载toString函数,若前面不加那个@Override后果是什么?就不重载了?

 @Override
    public String toString()
    {
        return description;
    } 
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 丶阿喜z 2015-08-12 01:08
    已采纳

    1.帮助自己检查是否正确的复写了父类中已有的方法

    2.告诉读代码的人,这是一个复写的方法

    关于第一点,我给你再说明一下:
    假设你现在要覆盖一个方法,然后因为你粗心,写错了参数的类型,刚好你又没有写@override注解,那么编辑器(eclipse)就不会提示你。
    这时候就产生了一个隐藏的bug,明明是准备复写方法,结果却是重载了方法。
    
    // 父类的方法:
    public void test(int i) {
        System.out.println(i);
    }
    
    // 子类重写
    
    // 第一种写法,正确
    @Override
    public void test(int i) {
        System.out.println(i + 1);
    }
    
    // 注意:这里因为人为粗心导致 i 的类型写成 float,没有写@Override注解,编辑器不会报错,那这里方法覆盖就变成了方法重载。
    public void test(float i) {
        System.out.println(i + 1);
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • fanst_ 2015-08-12 00:51

    注意是覆盖不是重载,不写没有关系,这个注解作用一个是明确覆盖父类函数,二是会主动校验是否覆盖正确(入参、返回值等),建议写上,养成良好习惯~

    评论
    解决 无用
    打赏 举报
  • Q544471255 2015-08-12 01:06

    不写这个的话,就是你自己定义的方法了,跟父类没有关系,但是写了就跟父类有关系了。比如重写toString(),equals(),hashCode()这几个方法,
    都要有@Override这个关键字的。

    评论
    解决 无用
    打赏 举报
  • 木大白易 2015-08-12 03:23

    @Override是重写,不是重载!要是重写java系统里边类的方法,都要加上@Override,要是重写自定义的父类的方法,可以不加!
    但是一般代码规范的话,都要加上!

    评论
    解决 无用
    打赏 举报
  • beaconD 2015-08-12 03:48
    评论
    解决 无用
    打赏 举报
  • Programmer_CJC 2015-08-12 06:05

    eclipse默认在重写的时候不懈@Override会报错,但是可以再属性中的java compliler -> Errors/Warnings中设置,可以设置成不写@Override只提示
    警告或者无视,但是为了养成一个良好的代码习惯,还是推荐都加上吧!

    评论
    解决 无用
    打赏 举报
  • Jason_WangG 2015-08-15 07:15

    @override是重写,不是重载

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题