【问题标题】:Android @Override usage [duplicate]Android @Override 用法[重复]
【发布时间】:2010-06-01 13:21:46
【问题描述】:

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

我注意到在 Android 示例代码中大量使用了@Override。我以为所有 Java 方法默认都是“虚拟的”?

那么@Override 做了什么?

例子:

private class HelloWebViewClient extends WebViewClient {

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

【问题讨论】:

标签: java android overriding


【解决方案1】:

这是一个注解,您可以使用它来告诉编译器和您的 IDE,您打算将具有该注解的方法重写为超类方法。如果您犯错,它们会发出警告/错误,例如,如果您打算重写一个方法但拼写错误,如果注释存在,IDE 或编译器会告诉您它实际上是 not覆盖超类方法,因此您可以确定原因并纠正拼写错误。

这对于 Android 应用程序和 Activity 尤为重要,例如,所有调用都基于 Activity 生命周期 - 如果您没有正确覆盖生命周期方法,它们将永远不会被框架调用。一切都可以正常编译,但您的应用程序将无法按照您的预期方式运行。添加注解会报错。

【讨论】:

  • 它不仅仅适用于 IDE。如果你 @Override 一个不在超类中的方法,Java 编译器将产生错误。
  • 遇到错误时 -> 添加@override。这就是答案的意思-_-
【解决方案2】:

此代码适合真正想了解@Override 流程的初学者,这将对您有所帮助! (提醒Java的继承概念。)

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

这些子类将具有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);  
    }  
}

【讨论】:

  • 解释得很好......谢谢
  • 所以基本上你使用覆盖来“取消继承”并从超类重写一个函数。明白了。
  • 为什么调用eat方法前没有添加类名?
  • 如果没有“@Override”注解,会发生什么?有什么错误?
  • 有史以来最好的解释
【解决方案3】:

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

它基本上只是一个安全机制。

供参考,请参阅this article(在中间某处解释了覆盖)

【讨论】:

  • 那个链接现在失效了
  • 感谢更新链接。我更新了我的答案。
【解决方案4】:

Override 多用于定义方法的情况。Overriding 与 way 的含义类似。

我将尝试以非常蹩脚的方式进行解释。假设您已经定义了 Oncreate() 方法并具有与之关联的属性。同样,当您在代码中为某个对象调用 Oncreate() 方法时,您现在编写的代码...将为您的应用程序覆盖 Oncreate() 的正式定义属性或继承属性。

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 2019-12-02
    • 2015-08-07
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2011-04-08
    • 2019-05-04
    相关资源
    最近更新 更多