安卓@Override使用

2022-08-31 14:16:06

(Java新手,老时候C#家伙。

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

然后该怎么办呢?@Override

例:

private class HelloWebViewClient extends WebViewClient {

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

答案 1

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

例如,这对于Android应用程序和活动来说尤其重要,其中所有调用都将基于活动生命周期 - 如果您没有正确覆盖生命周期方法,它们将永远不会被框架调用。一切都可以正常编译,但您的应用程序将无法按预期的方式工作。如果添加注释,则会收到错误。


答案 2

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

例如,该类可能有两个子类:和 。FishFreshwaterFishSaltwaterFish

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

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

public class SaltwaterFish extends Fish  
{  
    @Override  
    public void makeBabyFish(Fish fishSpouse, int numBabies) {  
        // call parent method  
        super.makeBabyFish(fishSpouse, numBabies);  
        // eat mate  
        eat(fishSpouse);  
    }  
}

推荐