当前位置: 首页 > 面试题库 >

Android Studio中@override的含义

干宏邈
2023-03-14
问题内容

我是Android Studio的新手,我想知道@OverrideAndroid Studio中声明的目的。


问题答案:

@Override是Java注释。它告诉编译器以下方法将覆盖其超类的方法。例如,假设您实现了一个Person类。

public class Person {
   public final String firstName;
   public final String lastName;

   //some methods

   @Override public boolean equals(Object other) {
      ...
   }
}

人员类具有equals()方法。equals方法已经在Person的超类Object中定义。因此,以上equals()的实现是对Persons的equals()的重新定义。也就是说,Person覆盖equals()。

覆盖方法而不显式注释是合法的。那么@Override注释有什么用呢?如果您不小心尝试以这种方式覆盖equals()怎么办:

public boolean equals(Person other) {
   ...
}

上面的案例有一个错误。您本来打算覆盖equals(),但没有。为什么?因为真正的equals()获取一个Object作为参数,而equals()获取一个Person作为参数。编译器不会告诉您该错误,因为编译器不知道您要覆盖。就编译器所知,您实际上打算重载
equals()。但是,如果您尝试使用@Override注解覆盖均等值:

@Override public boolean equals(Person other) {
   ...
}

现在,编译器知道您有错误。您想覆盖但没有。因此,使用@Override批注的原因是显式声明方法重写。



 类似资料:
  • 描述: 指明一个标识符覆盖其父类同名的标识符。 字典: - closure 版本: '>=3.3.0' 概述 @override标签指明一个标识符覆盖其父类同名的标识符。 这个标签为Closure Compiler提供了兼容性。默认情况下,JSDoc自动识别,覆盖其父类同名的标识符。 如果您的JSDoc注释块包含@inheritdoc 标签,就不需要在包含@Override标签了。@inherit

  • 问题内容: 除了让编译器检查超类是否具有该方法之外,是否有任何其他理由来注释方法? 问题答案: 如您所描述的,@ Override创建一个编译时检查,以确保方法被覆盖。这对于确保尝试覆盖时不会出现愚蠢的签名问题非常有用。 例如,我看到以下错误: 此类按编写方式进行编译,但是将@Override标记添加到equals方法将导致编译错误,因为它不会覆盖Object上的equals方法。这是一个简单的错

  • 问题内容: 是否确实有一些功能,或者它只是有点对此有何评论? 问题答案: 从有关注解的Java教程中: — 注释告知编译器该元素旨在覆盖超类中声明的元素(覆盖方法将在名为“接口与继承”的课程中进行讨论)。 虽然在重写方法时不需要使用此批注,但它有助于防止错误。如果标有的方法无法正确覆盖其父类之一中的方法,则编译器将生成错误。 让我们看一下Java语言规范9.6.1.4 Override中 给出的示

  • 我想做一个应用程序,使用谷歌翻译API。自从我添加了 我的构建中的依赖项。gradle我有个错误: 现在必须显式声明注释处理器。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到annotationProcessor配置中。-自动值-1.2。jar(com.google.auto.value:auto-value:1.2)或者,设置android。defaultConfig。javaCom

  • 问题内容: 实现接口时是否需要添加注释(不覆盖抽象类)? 又是什么注解实现? 问题答案: 在Java 5中,在实现从接口继承的方法时,一定不要添加;在Java 6中,您应该(否则会收到编译器警告)。 断言某个方法旨在覆盖某些内容,并且如果不是这种情况或不再存在这种情况,则会导致编译器通知您,例如,因为您要覆盖的方法已重命名。

  • Chrome不仅提供了管理书签、历史和标签的接口,还支持用自定义的页面替换Chrome相应默认的页面,这就是override pages。目前支持替换的页面包含Chrome的书签页面、历史记录和新标签页面。 使用override pages很简单,只需在Manifest中进行声明即可(一个扩展只能替换一个页面): "chrome_url_overrides" : { "bookmarks"