`
nudtgk2000
  • 浏览: 72788 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JAVA中 @Override 的作用(转)

    博客分类:
  • Java
阅读更多

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

 

如果想重写父类的方法,比如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

  ^

  1 错误

  上面的错误信息说在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 的支持

分享到:
评论

相关推荐

    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版本引入的特性,它增强了代码的可读性和可维护性,同时也简化了某些编程任务。在本篇中,我们将...

    Override错误已解决

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

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

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

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

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

    Java中的注解Annotationsnava)1

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

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

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

    Java异步调用转同步方法实例详解

    Java异步调用转同步方法实例详解是指在Java中将异步调用转换为同步调用的技术,主要用于解决异步调用过程中的阻塞问题。异步调用是一种非阻塞的调用方式,调用方在调用过程中,不直接等待返回结果,而是执行其他任务...

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

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

    java-websocket jar包

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

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

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

    Android代码-Android-CropView

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

    java代码-Override

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

    JAVA按键值更改转换

    在Java编程中,按键值更改转换是一个常见的需求,尤其是在处理用户输入或者实现自定义键盘逻辑时。Java提供了多种方式来处理键盘事件,包括AWT(Abstract Window Toolkit)和Swing库中的事件监听机制。下面我们将...

    Java实现的简单画图程序

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

Global site tag (gtag.js) - Google Analytics