( Java的新手,time C#的老家伙。)
我注意到@Override在Android示例代码中的很多用法。我还以为所有的Java方法默认都是"Virtual“的呢?
那么@Override会做什么呢?
示例:
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}发布于 2010-06-01 21:31:41
它是一个注释,您可以用它来告诉编译器和IDE,您希望具有该注释的方法成为超类方法的重写。它们有警告/错误,以防你犯了错误,例如,如果你打算重写一个方法,但拼写错误,如果注释在那里,IDE或编译器会告诉你它实际上没有重写超类方法,因此你可以确定原因并纠正拼写错误。
例如,这对于Android应用程序和活动来说更加重要,其中所有的调用都将基于活动生命周期-如果您没有正确覆盖生命周期方法,它们将永远不会被框架调用。一切都会编译的很好,但你的应用程序不会以你想要的方式工作。如果你添加注解,你会得到一个错误。
发布于 2012-01-10 20:26:30
这段代码对于真正想了解@Override程序的初学者来说,这会对你有帮助!(提醒一下Java的继承概念。)
例如,Fish类可能有两个子类:FreshwaterFish和SaltwaterFish。
这些子类将具有Fish类的所有功能,但可以通过新的属性和行为或从父类Fish修改的行为进一步自定义对象。例如,FreshwaterFish类可能包含有关生活在其中的淡水环境类型的信息(例如,河流、湖泊、池塘或水坑)。
类似地,SaltwaterFish类可能会使用覆盖机制自定义makeBabyFish()方法,以便鱼在繁殖后吃掉它的配偶(如超类中所定义的那样),如下所示:
public class SaltwaterFish extends Fish
{
@Override
public void makeBabyFish(Fish fishSpouse, int numBabies) {
// call parent method
super.makeBabyFish(fishSpouse, numBabies);
// eat mate
eat(fishSpouse);
}
}发布于 2010-06-01 21:32:18
Override-Annotation只是对编译器的一个提示,提示您要覆盖某个函数。然后,编译器将检查父类和接口是否存在该函数。如果不是,你会得到一个编译错误。
这基本上只是一种安全机制。
有关参考,请参阅this article (覆盖在中间的某个位置进行了解释)
https://stackoverflow.com/questions/2950074
复制相似问题