首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android @Override用法

Android @Override用法
EN

Stack Overflow用户
提问于 2010-06-01 21:21:46
回答 4查看 65.8K关注 0票数 69

( Java的新手,time C#的老家伙。)

我注意到@Override在Android示例代码中的很多用法。我还以为所有的Java方法默认都是"Virtual“的呢?

那么@Override会做什么呢?

示例:

代码语言:javascript
复制
private class HelloWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-01 21:31:41

它是一个注释,您可以用它来告诉编译器和IDE,您希望具有该注释的方法成为超类方法的重写。它们有警告/错误,以防你犯了错误,例如,如果你打算重写一个方法,但拼写错误,如果注释在那里,IDE或编译器会告诉你它实际上没有重写超类方法,因此你可以确定原因并纠正拼写错误。

例如,这对于Android应用程序和活动来说更加重要,其中所有的调用都将基于活动生命周期-如果您没有正确覆盖生命周期方法,它们将永远不会被框架调用。一切都会编译的很好,但你的应用程序不会以你想要的方式工作。如果你添加注解,你会得到一个错误。

票数 102
EN

Stack Overflow用户

发布于 2012-01-10 20:26:30

这段代码对于真正想了解@Override程序的初学者来说,这会对你有帮助!(提醒一下Java的继承概念。)

例如,Fish类可能有两个子类:FreshwaterFishSaltwaterFish

这些子类将具有Fish类的所有功能,但可以通过新的属性和行为或从父类Fish修改的行为进一步自定义对象。例如,FreshwaterFish类可能包含有关生活在其中的淡水环境类型的信息(例如,河流、湖泊、池塘或水坑)。

类似地,SaltwaterFish类可能会使用覆盖机制自定义makeBabyFish()方法,以便鱼在繁殖后吃掉它的配偶(如超类中所定义的那样),如下所示:

代码语言:javascript
复制
public class SaltwaterFish extends Fish  
{  
    @Override  
    public void makeBabyFish(Fish fishSpouse, int numBabies) {  
        // call parent method  
        super.makeBabyFish(fishSpouse, numBabies);  
        // eat mate  
        eat(fishSpouse);  
    }  
}
票数 53
EN

Stack Overflow用户

发布于 2010-06-01 21:32:18

Override-Annotation只是对编译器的一个提示,提示您要覆盖某个函数。然后,编译器将检查父类和接口是否存在该函数。如果不是,你会得到一个编译错误。

这基本上只是一种安全机制。

有关参考,请参阅this article (覆盖在中间的某个位置进行了解释)

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2950074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档