`
java-admin
  • 浏览: 1381637 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

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

OO 
阅读更多

http://tech.ccidnet.com/art/3539/20070813/1174977_1.html

 

 

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

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不是这样认为的,不知道这是当初jdk5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk6的支持这个功能就可以看出。

差一点忘了:

标准的java api文档java5与java6对Override 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文档没有提到Override对interface的支持。

 

 

覆写(Override)和重载(Overload)的比较

 

 

其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。
函数特征包括函数名,参数的类型和个数。
Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。
比如:Derived继承了Base,Base里面有void A(int a)
那么如果你Derived里面觉得A写得不好或不适合这个类,你想重新再写一遍A里的代码,那么就写override void A(int a)这样,原来的那个函数就被你新写的这个覆盖掉了。
Overload 是重载,就是说函数名相同,函数特征不同,系统会根据你提供的参数来调相应的函数。
比如:void A(int a)和void A(int a,int b)
如果你用的是A(1)那么调的是第一个,如果是A(1,1)那么调的是第二个。

分享到:
评论

相关推荐

    android @override 报错解决方案

    这种问题的根本原因在于Java语言版本的差异以及编译器对`@Override`注解的不同处理方式。 在Java 1.5之前,`@Override`注解主要用于明确指出一个方法是覆盖了父类中的同名方法。而在Java 1.6中,`@Override`的使用...

    详解Java中@Override的作用

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

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数

    在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中插入信息的方式,这些信息可以被编译器或运行时环境读取。反射(Reflection)是Java的一个强大特性,允许程序在运行时检查类、接口、字段和方法等...

    java通用注解API

    5. **反射与注解** - 通过反射机制,可以在运行时获取类、方法等的注解信息。 - `java.lang.reflect.AnnotatedElement`接口提供了获取注解的方法,如`getAnnotations()`、`isAnnotationPresent()`、`getAnnotation...

    java和ssh注解

    常见的注解如@Override、@Deprecated、@ SuppressWarnings等,它们可以帮助开发者进行类型检查、版本控制和消除警告。自定义注解可以用于更复杂的场景,如ORM框架的实体映射或AOP切面编程。 SSH框架中的注解进一步...

    java 自定义注解验证

    Java提供了内置的注解,如`@Override`、`@Deprecated`等,但自定义注解允许我们根据项目需求定制化这种元数据。 创建自定义注解涉及到以下几个步骤: 1. **定义注解**:使用`@interface`关键字创建注解。例如: ``...

    Java自定义注解实例

    2. **预定义注解**: Java标准库提供了若干预定义注解,如`@Override`、`@Deprecated`、`@ SuppressWarnings`等,用于标记过载、弃用和警告控制。 3. **元注解**: 元注解是用于注解其他注解的注解,如`@Retention`、...

    java注解深入理解

    Java注解是Java编程语言中的一个重要特性,它提供了一种元数据的方式,允许程序员在代码中插入额外的信息,这些信息可以被编译器或者运行时...同时,熟悉如何创建和处理自定义注解也是现代Java开发者的必备技能之一。

    Java注解实现方式

    Java注解是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,这些元数据可以被编译器或运行时环境用来执行各种任务,例如代码分析、验证、生成代码、部署等。注解提供了更加灵活和可扩展的方式来处理...

    Java Annotation注解技术

    6. **标准注解**:Java预定义的一些注解,如`@Override`(标记重写的方法)、`@Deprecated`(标记已废弃的API)和`@SuppressWarnings`(抑制编译警告)。 ### Annotation的工作原理 当定义了一个注解类型,开发者...

    注解javademo演示

    综上所述,Java注解是一个强大的工具,它简化了代码并提供了额外的元数据信息,使得代码更加易读、易维护,并且能够与各种框架和工具进行更紧密的集成。理解并熟练使用注解对于任何Java开发者来说都是至关重要的。...

    Java中的注解Annotationsnava)1

    首先,我们需要找到所有的`@Override`注解,通过`getType()`和`hasQualifiedName("java.lang", "Override")`来定位。然后,我们创建一个类来表示`@Override`的概念,这样就能更方便地找出那些应该使用但未使用的`@...

    Java实验4 注解.doc

    Java注解(Annotation)是Java语言中的一个重要特性,它允许我们在源代码中嵌入元数据。元数据是关于数据的数据,它可以提供额外的信息,但不直接影响程序的执行。注解的作用在于为编译器、解释器或其他工具提供信息,...

    Java 注解技术视频详解

    Java注解技术是Java平台中一个非常重要的特性,它为元数据提供了强大的支持,使得开发者能够在代码中嵌入额外的信息,这些信息可以被编译器、JVM或第三方工具读取和处理。在本视频教程中,我们将深入探讨Java注解的...

    android&java的注解详解demo

    2. **预定义注解**:Java标准库和Android SDK中包含了许多预定义的注解,如`@Override`, `@Deprecated`, `@NonNull`, `@UiThread`, `@WorkerThread`等,它们在特定场景下有着明确的用途。 三、注解的应用示例 在`...

    java注解使用例子

    Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器、JVM或者第三方工具提供信息。在Java程序中,注解可以被附加到类、接口、方法、变量等元素上,用于执行代码检查、生成代码、部署等任务。本篇...

    java注解大全(非常全面)

    Java标准库提供了若干内置注解,如`@Override`用于指示方法覆盖父类方法,`@Deprecated`标记已过时的方法,`@ SuppressWarnings`用于抑制编译器警告。此外,还可以自定义注解,通过`@Retention`设置保留策略(源码...

    java关于注解使用的例子

    Java注解(Annotation)是Java语言提供的一种元数据机制,它允许程序员在源代码的各个元素(如类、方法、变量等...同时,你还可以了解注解与其他Java特性的交互,如反射和注解处理器,这将有助于提升你的Java编程技能。

    Java 基础(5-8) - 注解机制详解.pdf

    Java基础(5-8) - 注解机制详解 Java中的注解机制是从JDK1.5版本开始引入的特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有四方面:生成文档、编译检查、编译时...

Global site tag (gtag.js) - Google Analytics