前往顾页
以后地位: 主页 > 收集编程 > Jsp实例教程 >

@Override的感化和利用根本教程

时候:2013-07-13 22:51来源:知行网www.zhixing123.cn 编辑:麦田守望者

 如果想重写父类的体例,比如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不是如许以为的,不晓得这是现在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的支撑。

------分开线----------------------------
标签(Tag):Java JAVA实例教程 JAVA根本教程 Java源代码 Java技能
------分开线----------------------------
保举内容
猜你感兴趣