脚本宝典收集整理的这篇文章主要介绍了

Overriding Methods in Java? – Always use @Override annotation(译)

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

原文链接
原作者:Pankaj
译者:smallclover
个人翻译,水平有限,如有错误欢迎指出,谢谢!

Java @Override注解

Java Annotations在Java1.5中被引入,Override注解是Java默认注解之一。当我们在方法上使用这个注解的时候,它将告诉编译器我们试图覆盖一个父类的方法。

让我们看看java中如何覆盖一个方法。

BaseClass.java

package com.journaldev.annotations;   public class BaseClass {           public void doSomething(String str){         System.out.println("Base impl:"+str);     }       } 

现在我们将创建一个子类,该子类覆盖BaseClass类的doSomething()方法。

ChildClass.java

package com.journaldev.annotations;   public class ChildClass extends BaseClass{      //@Override    public void doSomething(String str){        System.out.println("Child impl:"+str);    }   } 

请注意现在我们注释掉了@Override注解。

现在我们创建一个测试类来检验在java中覆盖是如何工作的。

OverrideTest.java

package com.journaldev.annotations;   public class OverrideTest {       public static void main(String[] args) {         BaseClass bc = new ChildClass();         bc.doSomething("override");     }   } 

以上程序输出结果如下:

Child impl:override 

这里的bcBaseClass类型,但是运行的时候,它所指向的对象是ChildClass类型的,所以当我们调用doSomething(String str)方法的时候,它会在ChildClass中查找该方法,因此会有如上输出
现在让我们改变BaseClassdoSomething()方法,具体如下所示。

//Change argument from String to Object public void doSomething(Object str){     System.out.println("Base impl:"+str); } 

你将注意到,编译器将不会抛出任何警告或者错误 并且如果你现在运行这个测试程序将得到以下输出。

Base impl:override 

得到该结果的原因是 BaseClass doSomething(Object str)方法没有被任何ChildClass覆盖,因此会尝试调用BaseClass的方法实现。ChildClass只是重写了doSomething()方法而已。

如果你没有注释掉ChildClass@Override注解,在你更改了BaseClass中的doSomething()方法后你将会得到编译器给出的错误信息,错误信息如下所示:

The method doSomething(String) of type ChildClass must override or implement a supertype method

很明显,使用@Override注解将会确保超类对方法签名的任何改变都将导致一个警告产生,你必须进行必要的修改来确保类正常的工作。

在编译时解决一个潜在的问题要好于在运行时解决问题,所以当你想要覆盖超类的方法的时候,请确保一直使用@Override注解。

ps:译者认为,养成一种良好的编程习惯有助于查找错误和理清思路,对于如何管理和编辑代码,每个人应该都有自己的一套方法,仁者见仁智者见智吧。

google的Java代码编写规范Google-Java-Style,网络上已经有人做过翻译,这里只贴出了英文版的地址,中文版请自行寻找哦(≧▽≦)/

总结

以上是脚本宝典为你收集整理的

Overriding Methods in Java? – Always use @Override annotation(译)

全部内容,希望文章能够帮你解决

Overriding Methods in Java? – Always use @Override annotation(译)

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过