在接口实现类中,加不加@Override的区别
最近的软件构造实验经常需要设计接口,我们知道@Override注解是告诉编译器,下面的方法是重写父类的方法,那么单纯实现接口的方法需不需要加@Override呢?
定义一个类实现接口,使用idea时,声明implements之后会报错,提示需要实现接口方法,根据idea的提示自动修改,我们发现它会自动添加上@Override
把@Override注释掉,也不会报错
所以单纯实现接口的方法需不需要加@Override呢?
? ? ? ? 答案是:如果只想单纯实现接口方法,加不加没区别,加上更好,理由如下:??
? ? ? ? 如果不写@Override注解去直接重写方法,当基类存在与子类各种条件都符合的方法时实现覆盖;如果条件不符合时,则是当成新定义的方法使用。编译器是不会判断你是不是正确重写了父类中的方法的。如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。
??如果写了@Override注解时,即说明子类要覆盖基类的方法,基类必须存在方法 (控制类型public,protected,返回值,参数列表类型)与子类方法完成一致的方法,否则会报错(找不到被Override的方法)。程序会判断你是否正确的重写了父类的对应方法。而且加上此注解后,程序会自动屏蔽父类的方法。
??所以如果想覆盖基类方法时,最好还是写上@Override注解,这样有利于编译器帮助检查错误。
? ? ? ? 同样,当我们实现接口方法的时候,加上@Override可以帮助我们检查实现方法中的错误(控制类型public,protected,返回值,参数列表类型是否匹配),当实现类中的方法与接口方法完成一致(控制类型public,protected,返回值,参数列表类型都一样),编译器会认为你实现了接口方法,如果我们不写@Override那么编译器就不知道这个究竟是重写 还是说自己customized的方法,也就不会帮助检查错误了。
总结:
? ? ? ? 虽然不是必须 但是还是写上吧。
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!