繁体   English   中英

Android中的@Override注释

[英]@Override annotation in Android

我是Java和Android编程的新手。 我遇到的问题是,在浏览了几本书,论坛和网站之后,我对@override注释的作用并不清楚。 我理解它意味着一个方法被过度使用。 但为什么在android中需要它。 我在java的源代码中很少看到它,但在android中一直都是这样。

您可能很少在旧的 Java源代码中看到它,因为它是一个相当新的创新 - 而Android代码更接近于定义。

这是一个安全网,真的 - 它告诉编译器你正试图覆盖某些东西 - 所以如果方法没有覆盖任何东西,请失败,例如由于名称中的拼写错误。 就像override是一个关键字一样,它是C#中方法声明的一部分。 它可以帮助您明确自己正在做的事情,这有助于防止错误,并使您的代码更清晰地适应未来的读者。

好吧,如果您了解@Override注释的基本知识,那么它只是元数据信息,它有两个目的:

  • 描述它被覆盖的方法,因为它是在接口或扩展类中定义的

  • 帮助您正确识别哪些方法是本地声明的,哪些是重写的,因为在android中您可能会从Fragment,Activity,Services,BroadcastReceiver等扩展,这是一个很好的做法,可以使您的代码更清晰。

至于你没有看到它的Java风格的问题,它不仅是因为它是一个相当新的功能(不是自2005年以来的新功能),而是因为你没有在java中覆盖那么多的方法,至少在Swing中没有或SWT,最常见的是你会在TableModel中找到它们,或者在扩展的HttpServlet类中它是Servlet

因为你覆盖了很多方法,例如;当你创建你的Activity (扩展Activity )时,你需要覆盖方法onCreate( Bundle savedInstanceState)来初始化你的Activity ,依此类推, 每次你从一个母类重写一个方法,eclipse添加注释 @override

@Override意味着您要从子类中的超类重新定义函数。 阅读有关抽象方法,类,多态的更多信息。

我对Android编程几乎一无所知,但@ Override-annotation用于表明该方法覆盖了一个supeclass方法(或者在Java 1.6中实现了一个接口方法)。 除了注释的纯文档含义之外,至少Eclipse还会警告您(或者根据您的设置将其标记为错误)如果该方法实际上不会覆盖任何超类方法,那么当您认为它时(因此可以防止一些令人沮丧的错误) -狩猎)。 也许Android编译器默认情况下需要使用@Override注释所有重写方法。

@overide类似于c ++中的虚方法,android中的Oncreate方法更像是wxWidget中的虚拟bool Oninit(),这个方法被android(Oncreate)用来构建你的GUI,因为GUI不同于编程的人Oncreate中的代码也改变了,这就是为什么我们必须@overide它。 我们@overide库使用的任何方法,我们想要自定义。 像Oninit()这样的Oncreat()也是我们想要自定义的方法。

out_marginLeft="50dp"
            android:layout_marginTop="50dp"
            android:layout_marginRight="50dp"
            android:gravity="center"
            android:orientation="vertical">

            <ProgressBar
                android:id="@+id/progressBar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/txtProgress"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:progress="50"
                android:progressTint="@android:color/black" />

            <TextView
                android:id="@+id/txtProgress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="Progress"
                android:textColor="@android:color/black" />
        </LinearLayout>  

Java

java和android都不需要它。 你经常在android程序中看到它,因为当你创建一个新的活动,方法等时,eclipse会自动添加它。如果你删除了@Override注释,就不会有任何问题。

@override意味着您从可用类借用方法,并且不是由程序员定义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM