android override简介

本文详细解释了Android开发中@Override注解的作用与好处,包括帮助阅读代码、编译器验证方法名称准确性等,并提供了实例说明。

转自:http://blog.sina.com.cn/s/blog_9e4375f5010137n7.html

Android的开发者对@Override肯定是非常熟悉,不管是自己的代码中还是书上都会出现,但是他是什么意思呢?如下:

  @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
 
  1、可以当注释用,方便阅读
   2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)
  example:

  在重写父类的onCreate时,在方法前面加上@Override系统可以帮你检查方法的正确性。例如:

  publicvoidonCreate(BundlesavedInstanceState){…….}
  这种写法是正确的,如果你写成
  publicvoidoncreate(BundlesavedInstanceState){…….}
  这样编译器会报如下错误——
  Themethodoncreate(Bundle)oftypeHelloWorldmustoverrideorimplementasupertypemethod,
  以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
  而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
  

现象:

... java: 1801: method does not override a method from itssuperclass @Override...

原因:

Eclipse is defaulting to Java 1.5 and you have classesimplementing interface methods (which in Java 1.6 can be annotatedwith @Override, but in Java 1.5 can only be applied to methodsoverriding a superclass method).

就是说Java1.5的编译器默认对父类的方法进行覆盖,采用@Override进行说明;但1.6已经扩展到对接口的方法;所以如果还是以Java1.5的编译器来编译的话,会出现错误。

解决方案:

Go to your project/ide preferences and set the java compilerlevel to 1.6 and also make sure you select JRE 1.6 to execute yourprogram from eclipse.

java的编译器是1.6版本的,选择编译级别为1.6,但重要的一点是,选择build的android库是1.5的即可,生成的apk程序是可以在1.5内核上跑起来。

总的来讲: android sdk的版本与JavaJRE的版本可以配置起来用,两者关系应该是疏松的,有高人可以指点错误。

 

1、Android里有一些系统自动调用的回调函数CallbackMethods,如果写的程序运行无错,但是就是没有该有的反应,那就可能是覆写回调函数时没有加@Override且函数名写错了。2、覆写的函数最好加上@Override。3、可以在Source->Override/Implement Methods下自动添加覆写和接口函数,可以确保函数名拼写正确。

<think>嗯,用户这次问的是Android中的"@Override"注解的含义。之前两次对话都是技术问题,用户似乎是个开发者,在解决Android和Java底层问题。这次问题相对基础,但依然需要准确解释清楚。 用户可能刚接触Android开发,或者复习基础知识。要避免用晦涩的术语,重点讲清三个核心点:语法作用(声明覆盖)、设计意义(多态实现)、实际价值(安全校验)。记得补充IDE报错的实例,这样更直观。 之前回答Context和Java模块问题时都遵守了规范,这次也要保持:先完整解答,再准备相关问题。注意用户反复强调的格式要求——结尾必须用"§§相关问题§§"开头且不换行。 相关问题要围绕注解延伸:从基础(作用)到进阶(使用场景),再到对比(其他注解)和原理(编译器机制)。这样能覆盖用户可能的后续疑问。特别要提醒滥用override的风险,这是新手常踩的坑。 </think>在Android开发中,`@Override`是一个Java注解(Annotation),用于明确表示当前方法是对父类(或接口)中已有方法的重写。它的核心作用和意义如下: 1. **语法声明** 直接标注在方法前(例如 `@Override public void onCreate(...)`),向编译器声明该方法意图覆盖父类/接口的**同名方法**。 2. **核心目的** - ✅ **强制校验**:编译器会检查被标注方法是否**真正重写了父类方法**。若父类无此方法(如方法名拼写错误),将直接报错,避免隐性逻辑错误。 - ✅ **代码可读性**:明确标识该方法属于重写逻辑,提升代码可维护性。 3. **Android中的典型使用场景** ```java public class MainActivity extends AppCompatActivity { @Override // 重写Activity的生命周期方法 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override // 重写点击事件回调方法 public void onClick(View view) { ... } } ``` 4. **常见错误** - 未调用`super.onXXX()`(如`super.onCreate()`)导致生命周期异常 - 拼写错误(如`onCreat`)触发`@Override`编译报错 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值