详解@Override注解
目录
1.是什么
@Override注解是伪代码,用于表示被标注的方法是一个重写方法。
@Override注解,只能用于标记方法,并且它只在编译期生效,不会保留在class文件中。
@Override 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
@Override注解标记的方法声明,如果没有覆写或者实现超类的方法声明,或者不是覆写Object的public方法,那么编译就会报错。使用@Override注解,有助于我们尽早发现这样的错误:本来想声明一个“覆写”方法,却偶然声明成“重载”方法。
2.为什么用
既然不写@Override也可以重写父类的方法,那为什么非要“多此一举”写上这个注解呢?
使用@Override注解主要有两个好处:
1)帮助自己检查是否正确的重写父类方法
2)明显的提示看代码的人,这是重写的方法
3.举例说明
1)示例一
public class Person { private String name; private String sex; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", sex='" + sex + '\'' + '}'; }}
上述代码是重写 Object 类的 toString() 方法,该方法使用 @Override 注解。如果 toString() 不小心写成了 t0String(),那么程序会发生编译错误。会有如下的代码提示:
类型为 Person 的方法t0String()必须覆盖或实现超类型方法
2)示例二
public class Person { private String name; @Override public boolean equals(Person person){ return this.name.equals(person.name); } @Override public boolean equals(Object person){ return this.name.equals(((Person)person).name); }}
3)示例三
public class Animal { public void eat(){ System.out.println("吃饭"); }}
public class Dog extends Animal{ @Override public void eat(){ System.out.println("狗会吃饭"); }}
声明两个类Animal和Dog,Dog类继承了Animal类并且对其eat方法进行了重写;可以发现在重写eat方法时我们加上了@Override注解,其实不加这个注解代码也不会出现问题;但如果在开发过程中不小心写错方法名或者写错了参数,但这是符合语法规范的,能够顺利通过编译;但相关业务功能没能实现,这就会降低我们的开发效率,增加开发成本,这也就是为什么要用@Override注解的原因。
代码的可读性是非常重要的,我们写的代码很多时候会被别人看到或者修改,加上@Override注解会让看代码的人一眼明白,这个方法是重写了父类的方法,可读性更佳!
来源地址:https://blog.csdn.net/qq_61902168/article/details/130019795
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341