黑马程序员技术交流社区

标题: @Override 重写是可写可不写么 [打印本页]

作者: longer    时间: 2015-3-30 23:56
标题: @Override 重写是可写可不写么
毕老师的视频里面没看到,但有些程序里面都写了,到底什么情况下要写,写和不写有什么区别呀。

作者: 剑雨飘扬    时间: 2015-3-31 00:21
要是实现接口,肯定都得重写,要是继承的父类中已经实现了方法,可以不用重写
作者: 戴祺    时间: 2015-3-31 08:29
如果是继承某抽象类,肯定得实现它的抽象方法,那就必然要重写,如果是想用同样结构的函数实现不同的功能,也得重写
作者: longer    时间: 2015-3-31 10:25
可能是我没说清楚吧,我问的是@Override  这个标识是不是要写,就是有的地方看到写了,有的地方方法前面没有写@Override
作者: 林吉前    时间: 2015-3-31 10:37
longer 发表于 2015-3-31 10:25
可能是我没说清楚吧,我问的是@Override  这个标识是不是要写,就是有的地方看到写了,有的地方方法前面没 ...

{:3_47:}那是一个给编译器看的注释,叫“啊呢替逊”,这个写了跟不写一样的,用Eclipse以后自然给你写上,写上这个就必须是重写方法,比如线程的Runnake接口 的run方法 如果你没写这个 拿你写一个public int run(){}  着是可以的,但是写了那个注释以后,你就不能这么写,这么写一定报错,这个给编译器看的注释以后就业班应该会说,但是没多大用处,写不写无所谓。
作者: yi岁⑨很乖❤    时间: 2015-3-31 10:51
@Override 这个是给开发工具(javac编译工具)传递信息,覆盖检查,作为一种标记的。

比如说你的类中要覆盖equals方法,但是你的参数类型写错了,比如
@Override
public boolean equals(String obj)
{
}这个时候开发工具,例如eclipse 就会给你报错提示,你并没有覆盖Object的equals方法,
正确的应该改为:equals(Object obj

所以,注释相当于一种标记,在程序中加了注释就等于为程序打上了某种标记,没加则等于没有某种标记,
以后javac编译器,开发工具和其他程序可以用反射来了解你的类以及各种元素上有无何种标记,
看你有什么标记,就去干相应的事。

标记可以加在包,类,字段,方法,方法的参数,以及局部变量上。

现在理解了么? 小小的注释,作用还是很大的。。。

作者: longer    时间: 2015-3-31 11:15
yi岁⑨很乖❤ 发表于 2015-3-31 10:51
@Override 这个是给开发工具(javac编译工具)传递信息,覆盖检查,作为一种标记的。

比如说你的类中要覆 ...

谢谢耐心解答,学习了:lol
作者: yi岁⑨很乖❤    时间: 2015-3-31 11:18
longer 发表于 2015-3-31 11:15
谢谢耐心解答,学习了

不客气呢,其实我还想说,如果你愿意可以给我评个分,打赏点黑马币什么的:#




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2