详解@Override注解

这篇具有很好参考价值的文章主要介绍了详解@Override注解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.是什么

2.为什么用

3.举例说明

1)示例一

2)示例二

3)示例三


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,会报错,因为这是equals方法重载
     */
    @Override
    public boolean equals(Person person){
        return this.name.equals(person.name);
    }

    /**
     * 覆写Object的equals方法
     */
    @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://www.toymoban.com/news/detail-628988.html

到了这里,关于详解@Override注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JAVA】关于重写(Override)与重载(Overload)

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 关于JAVA,我们也已经学习过一段时间了,今天我们来学习一下在JAVA中方法的重载与重写。 方法重载(overload)是指 在一个类中定义多个同名但参数列表不同的方法 。Java编译器会根据方法调用时传递的参数来选择调用

    2024年02月08日
    浏览(42)
  • Python中重写(override)

    Python中,有重写(override)的概念,但是没有严格意义上的重载(overload)。 类继承时,子类可以重新定义父类中已有的方法,称为重写(Override)。 在Python中,没有像其他语言(如C++)那样的函数重载(Overload)机制。函数重载是指在同一作用域内允许多个函数具有相同的名

    2024年02月02日
    浏览(43)
  • c#多态(override)的使用

    方法重写(override):多态,通过父类类型对象,调用子类当中对应方法的实现。 细节:子类当中的override方法会“抹杀”父类当中对应virtual方法 不使用多态时,父类调用子类方法时,会调用父类的方法 main方法通过里氏替换调用子类shout方法 那如何可以,通过父类调用子类的

    2024年02月10日
    浏览(47)
  • 前端本地覆盖资源(local override)调试

    Chrome 65 中的开发者工具将包含以下新功能: 本地替换 新的无障碍工具 更改标签页 新的搜索引擎优化 (SEO) 和性能审核 Performance 面板中的多个录制内容 使用 worker 和异步代码执行可靠的代码单步调试 本篇文章主要学习与实践下本地替换这个功能 提示:以下是本篇文章正文内

    2024年01月16日
    浏览(28)
  • 【unity实践记录】动画层的顺序和混合模式Override/Additive

    手册上关于 层顺序 的介绍基本没有,只是一个不明所以的QA一带而过: 层的排序是否重要? 是的。层的优先级是按顺序从上到下的。层设置为  override  将始终覆盖先前的层(如果层有遮罩,则基于其遮罩)。 基础层的权重值是否应始终设置为 1?或者在使用其他层时权重

    2024年02月04日
    浏览(27)
  • 报错:v-html will override element children 解决方法

    原因: v-html 标签内还有内容 解决方法:删除标签内的内容,如下

    2024年02月13日
    浏览(34)
  • C++面试八股文:override和finial关键字有什么作用?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第22面: (二师兄好苦逼,节假日还在面试。。。) 面试官:C++的继承了解吗? 二师兄:(不好意思,你面到我的强项了。。)了解一些。 面试官:什么是虚函数,为什么需要虚函数? 二师兄:虚函数允许在基类中定义一个函

    2024年02月10日
    浏览(32)
  • C#---第二十:不同类型方法的执行顺序(new / virtual / common / override)

    本文介绍不同类型的方法,在代码中的执行顺序问题: 构造方法 普通方法(暂用common代替)、虚方法(Virtual修饰)、New方法(new修饰)三个优先级相同 overide方法(会替换virtual方法,此时virtual方法被隐藏,无法再调用到) 当父类、子类中的方法都是new/common/virtual/这三类的

    2024年02月10日
    浏览(22)
  • E45: ‘readonly‘ option is set (add ! to override)解决办法

    该错误为当前用户没有权限对文件作修改 一、解决办法: 当前用户没有权限对文件作修改,你有权限修改文件吗?如果是root权限,可以:wq! 强行保存退出; 该文件没有正确保存退出,正在打开状态,请别人关闭后再保存; 若该文件所有人都关闭了,提示有的人没有关闭,则

    2024年02月04日
    浏览(28)
  • 【C++】C++11-类的新功能&default&delete&final&override关键字

    一个类有多少个默认成员函数? c++98:6个 C++11:8个 在C++98中,一个类中有如下六个默认成员函数:构造函数,析构函数,拷贝构造函数,拷贝赋值函数,取地址重载函数,const取地址重载函数,其中前四个成员函数最重要.后面两个成员函数一般不会用到 其中这里“默认”的意思就是 你不

    2024年02月02日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包