我是Java和Android编程的新手。我遇到的问题是,在浏览了几本书,论坛和网站之后,我对@override注释的作用并不清楚。我理解它意味着一个方法被过度使用。但为什么在android中需要它。我在java的源代码中很少看到它,但在android中一直都是这样。
答案 0 :(得分:21)
你可能很少在旧的 Java源代码中看到它,因为它是一个相当新的创新 - 而Android代码在定义上更近似。
这是一个安全网,真的 - 它告诉编译器你尝试覆盖某些东西 - 所以如果方法不覆盖任何东西,请失败,例如由于名字中的拼写错误。就像override
是一个关键字一样,它是C#中方法声明的一部分。它可以帮助您明确自己正在做的事情,这有助于防止错误,并使您的代码更清晰地适用于未来的读者。
答案 1 :(得分:7)
如果您了解@Override注释的基本知识,那么它只是元数据信息,可以满足两个目的:
描述它被覆盖的方法,因为它是在接口或扩展类中定义的
帮助您正确识别哪些方法是本地声明的,哪些方法是重写的,因为在Android中您可能会从Fragment,Activity,Services,BroadcastReceiver等扩展,这是一种很好的做法,可以使您的代码更清晰。
至于你在Java风格中看不到它的问题,这不仅仅是因为它是一个相当新的功能(不是自2005年以来的新功能),而是因为你不能覆盖它java中的方法至少不在Swing或SWT中,最常见的是你会在TableModel中找到它们或者在扩展的HttpServlet类中它的Servlet
答案 2 :(得分:2)
因为您覆盖了很多方法,例如;当您创建Activity
(扩展Activity
)时,您需要覆盖方法onCreate( Bundle savedInstanceState)
来初始化Activity
,等等,每次从母类重写方法时,eclipse都会添加注释 @override
答案 3 :(得分:2)
@Override
表示您想要从子类中的超类重新定义函数。阅读有关抽象方法,类,多态的更多信息。
答案 4 :(得分:1)
我对Android编程几乎一无所知,但@ Override-annotation用于表明该方法重写了一个supeclass方法(或在Java 1.6中实现了一个接口方法)。除了注释的纯文档含义之外,至少Eclipse还会警告您(或者根据您的设置将其标记为错误)如果该方法实际上不会覆盖任何超类方法,那么当您认为它时(因此可以防止一些令人沮丧的错误) -狩猎)。也许Android编译器默认情况下需要使用@Override注释所有重写方法。
答案 5 :(得分:0)
java和android都不需要它。 你经常在android程序中看到它,因为当你创建一个新的活动,方法等时,eclipse会自动添加它。 如果删除@Override注释,则无法进行任何操作。
答案 6 :(得分:0)
答案 7 :(得分:0)
Child
答案 8 :(得分:-1)
@override
表示您从可用类借用方法,而不是由程序员定义。