在接口实现类中,加不加@Override的区别

最近的软件构造实验经常需要设计接口,我们知道@Override注解是告诉编译器,下面的方法是重写父类的方法,那么单纯实现接口的方法需不需要加@Override呢?

定义一个类实现接口,使用idea时,声明implements之后会报错,提示需要实现接口方法,根据idea的提示自动修改,我们发现它会自动添加上@Override

把@Override注释掉,也不会报错

所以单纯实现接口的方法需不需要加@Override呢?

        答案是:如果只想单纯实现接口方法,加不加没区别,加上更好,理由如下:  

        如果不写@Override注解去直接重写方法,当基类存在与子类各种条件都符合的方法时实现覆盖;如果条件不符合时,则是当成新定义的方法使用。编译器是不会判断你是不是正确重写了父类中的方法的。如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。

  如果写了@Override注解时,即说明子类要覆盖基类的方法,基类必须存在方法 (控制类型public,protected,返回值,参数列表类型)与子类方法完成一致的方法,否则会报错(找不到被Override的方法)。程序会判断你是否正确的重写了父类的对应方法。而且加上此注解后,程序会自动屏蔽父类的方法。

  所以如果想覆盖基类方法时,最好还是写上@Override注解,这样有利于编译器帮助检查错误。
        同样,当我们实现接口方法的时候,加上@Override可以帮助我们检查实现方法中的错误(控制类型public,protected,返回值,参数列表类型是否匹配),当实现类中的方法与接口方法完成一致(控制类型public,protected,返回值,参数列表类型都一样),编译器会认为你实现了接口方法,如果我们不写@Override那么编译器就不知道这个究竟是重写 还是说自己customized的方法,也就不会帮助检查错误了。

总结:
        虽然不是必须 但是还是写上吧。
 

相关推荐

  1. 接口、抽象区别

    2023-12-15 05:26:03       16 阅读
  2. 接口和抽象区别

    2023-12-15 05:26:03       20 阅读
  3. import后{}区别(es6引用)

    2023-12-15 05:26:03       37 阅读
  4. C#中override与重载区别

    2023-12-15 05:26:03       11 阅读
  5. 抽象接口区别你知道吗

    2023-12-15 05:26:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 05:26:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 05:26:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 05:26:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 05:26:03       18 阅读

热门阅读

  1. 第一次使用ThreadPoolExecutor处理业务

    2023-12-15 05:26:03       31 阅读
  2. MATLAB 2018一本通 学习笔记一

    2023-12-15 05:26:03       38 阅读
  3. 数据处理架构

    2023-12-15 05:26:03       37 阅读
  4. 【MySQL】基础(一)

    2023-12-15 05:26:03       36 阅读
  5. 不安全的裸指针

    2023-12-15 05:26:03       34 阅读
  6. kafka rebalance(再均衡)导致的消息积压分析

    2023-12-15 05:26:03       33 阅读
  7. 学习RPC框架-Thrift日志

    2023-12-15 05:26:03       42 阅读