`

JAVA中 @Override 的作用

    博客分类:
  • java
阅读更多

如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性,
@Override
public String toString(){...}这是正确的
一旦写错 写成这样
@Override
public String tostring(){...}

编译器可以检测出这种写法是错误的 这样能保证你的确重写的方法正确
而如果不加@Override
public String tostring(){...}这样编译器是不会报错的 它只会认为这是你自己新加的一个方法而已

------------------------------------------------------------

@Override的用法:

Override
java.lang.Override是一个marker annotation类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。如果我们使用了这种annotation在一个没有覆盖父类方法的方法时,java编译器将以一个编译错误来警示。
这个annotaton常常在我们试图覆盖父类方法而确又写错了方法名时发挥威力。

使用方法极其简单:在使用此annotation时只要在被修饰的方法前面加上@Override
下面的代码是一个使用@Override修饰一个企图重载父类的toString方法,而又存在拼写错误的sample
清单1

@Override public String toSting() { // 注意方法名拼写错了 return "[" + super.toString() + "]";}

-------------------------------------------------------

Java6@override注解与Java5不同之处:

首先看一下下面的示例代码 : 

  Parent.java

public class Parent...{
  public void parentMethod() ...{
  }
}

  IChild.java

public interface IChild ...{
  void interfaceMethod();
}

  Child.java

public class Child extends Parent implements IChild ...{
  @Override
  public void parentMethod() ...{
  }
  @Override
  public void interfaceMethod() ...{
  }
}

  由于代码很简单,我就不做说明

  上述代码在jdk6下可以编译通过

  而在jdk5下编译无法通过,输出的错误信息如下:

  Child.java:7: 方法未覆盖其父类的方法

  @Override

  ^

  错误

  上面的错误信息说在Child.java第七行的Override注解是不对的,不对的原因是该方法(interfaceMethod)不是父类方法。

  当然,实际上这个方法是类实现的接口中方法,但是,这个语法的jdk6的下面是可以通过的,也就是说java6认为类覆盖父类方法与实现接口方法都叫override,而jdk5不是这样认为的,不知道这是当初jdk5bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk6的支持这个功能就可以看出。

  差一点忘了:

  标准的java api文档java5java6Override annotation的的解释一样的

  java5

  Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.

  java6

  Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.

  两段说明一模一样,让人搞不清楚的是java6文档没有提到Overrideinterface的支持。

1
0
分享到:
评论

相关推荐

    java关于@override.md

    对Java中@override个人理解阐述,希望能帮大家更好理解。

    分享一下@Override标签背后的小秘密

    Java 中的@Override标签的深入理解 @Override标签是一个非常重要的标签,但是一般情况下,我们只是知道它的基本用途,即用于标记方法的重写。但是,这个小小的标签蕴藏着很多有趣的秘密。今天,我们就来深入探讨...

    详解Java中@Override的作用

    在Java编程语言中,`@Override` 是一个重要的注解,它的主要作用是明确标识一个方法是重写了其父类中的方法。这个注解在代码的可读性和编译时的错误检查方面提供了显著的优势。下面我们将深入探讨`@Override` 的作用...

    android @override 报错解决方案

    现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...

    Annotation--学习:JDK内建Annotation

    在Java编程语言中,Annotation(注解)是一种元数据,它提供了在编译时和运行时为代码添加信息的方式。注解是自Java 5版本引入的特性,它增强了代码的可读性和可维护性,同时也简化了某些编程任务。在本篇中,我们将...

    AndroidStudio中重载方法@Override的使用详解

    `@Override` 注解是Java语言中用于标记一个方法是重写了父类的特定方法,确保编译器在编译时进行检查,以防止意外地覆盖或丢失方法。本文将深入探讨在Android Studio中如何使用`@Override`进行方法重载以及相关的...

    Override错误已解决

    在进行 Java 开发的过程中,特别是在使用 Eclipse 这样的集成开发环境(IDE)时,开发者可能会遇到一个常见的问题:`Override` 错误。这种错误通常发生在尝试覆盖父类中的方法时,而 IDE 或编译器未能正确识别该操作...

    java用填充多边形的方法填充一个三角形Demo

    java用填充多边形的方法填充一个三角形 主要代码: Icon icon = new Icon() { @Override public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D) g; ...

    Java实现的树以及包含树的内存缓存框架

    java.util竟然没有提供树(数据结构)的实现!让我这种拿来主义的懒人很不开心。 随手写了一个TreeNode,顺道实现了个对应的内存缓存框架,适用于数据量不大,更新也少但是反复要读的数据,比如模块信息/组织结构/...

    Java中的注解Annotationsnava)1

    在Java中,注解通常以`@AnnotationName`的形式出现在代码中,例如`@Override`、`@Deprecated`等。注解的类型是接口,它们定义了一组可选的元素,这些元素可以为注解提供具体的值。例如,`@SuppressWarnings`注解有一...

    java-websocket jar包

    Java WebSocket 是一种基于Java语言实现的WebSocket协议库,主要用于实现在Web应用中提供实时的双向通信功能。WebSocket协议是HTML5规范的一部分,它允许客户端和服务器之间建立持久性的连接,从而实现数据的双向推...

    Java 重写(Override)与重载(Overload).pdf

    根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...

    Java重写(Override)&重载(Overload).pdf

    Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...

    Java实现的简单画图程序

    在Java编程语言中,开发一个简单的画图程序可以利用Java的图形用户界面(GUI)库,如Java AWT(Abstract Window Toolkit)或Swing。这个程序通常会包含一个Canvas组件,用户可以通过鼠标交互来绘制图形。本文将深入...

    Android代码-Android-CropView

    导入lib-cropview并在AndroidManifest.xml中添加Activity * 实现CropperHandler并实现方法 ```java @Override public Activity getActivity() { return this; } @Override public CropperParams getParams...

    java代码-Override

    在Java编程语言中,`Override`关键字是一个非常重要的概念,它用于标识一个方法是重写了父类中的同名方法。这个关键词确保了子类的方法能够覆盖或实现接口中定义的抽象方法,从而提供了多态性,这是面向对象设计的...

    The method of type must override a superclass method解决方式, myeclipse, java, web

    在Java编程语言中,"The method of type must override a superclass method" 是一个常见的错误提示,它通常出现在子类试图重写父类方法时,但没有按照正确的格式进行。这个错误通常与多态性和继承概念有关,是理解...

    java中需要用到的各种过滤器

    ### Java中需要用到的各种过滤器知识点 #### 一、概述 在Java Web开发中,过滤器(Filter)是一种非常重要的机制,它可以对用户请求和服务器响应进行预处理或后处理,从而实现诸如编码设置、权限控制、登录验证等...

Global site tag (gtag.js) - Google Analytics