overload和override的区别

override(重写) 
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、参数类型、个数、顺序至少有一个不相同。  
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。

Java6的@override注解与Java5不同之处

首先看一下下面的示例代码 :

Parent.java

public class Parent...{
public void parentMethod() ...{
}
}

IChild.java

public interface IChild ...{
void interfaceMethod();
}

Child.java

public class Child extends Parent implements IChild ...{
@Override
public void parentMethod() ...{
}
@Override
public void interfaceMethod() ...{
}
}

由于代码很简单,我就不做说明

上述代码在jdk6下可以编译通过

而在jdk5下编译无法通过,输出的错误信息如下:

Child.java:7: 方法未覆盖其父类的方法

@Override

^

1 错误

上面的错误信息说在Child.java第七行的Override注解是不对的,不对的原因是该方法(interfaceMethod)不是父类方法。

当然,实际上这个方法是类实现的接口中方法,但是,这个语法的jdk6的下面是可以通过的,也就是说java6认为类覆盖父类方法与实现接口方法都叫override,而jdk5不是这样认为的,不知道这是当初jdk5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk6的支持这个功能就可以看出。

差一点忘了:

标准的java api文档java5与java6对Override annotation的的解释一样的

java5:

Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.

java6:

Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.

两段说明一模一样,让人搞不清楚的是java6文档没有提到Override对interface的支持。

overload和overide的区别相关推荐

  1. C++中overload,override,overwrite的区别?

    C++中overload,override,overwrite的区别? Overload(重载) Override(覆盖) Overwrite(重写) Overload(重载) 在C++程序中,可以将 ...

  2. 类的 三大特性 封装,继承,多态 overload与override的区别

    OOP三大特性:封装,继承,多态 封装的目的:为了让类更安全 封装的做法: 1.类里面的成员变量做为private 2.使用成员方法来间接访问成员变量 3.在该方法里面加限制条件 php类里面不允许出 ...

  3. Overload和Override的区别说明

    下文笔者讲述Overload和Override的区别简介说明,如下所示: Overload:重载Override:覆盖(重写)------------------------------------- ...

  4. 重载Overload 和重写Override区别

    重载Overload 和重写Override区别 一.含义 二.代码 1.重载OverLoad 2.重写Override 一.含义 重载OverLoad:表示同一个类中的可以有多个方法名称相同的方法, ...

  5. Overload和Override的区别。

    Overload和Override的区别. Overloaded的方法是否可以改变返回值的类型? Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一 ...

  6. Override和Overload的含义和区别

    Override和Overload的含义和区别. (1). Override 特点 (01).覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果: (02).覆盖的方法的返回值必须 ...

  7. Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值

    Overload 和Override 的区别.Overloaded 的方法是否可以改变返回值的类型? Overload 是重载的意思,Override 是覆盖的意思,也就是重写. 重载Overload ...

  8. OverLoad与override的区别

    首先从概念上, 重载Overload:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 覆盖Override:表示子类中的方法可以与父类中的某个方法的名称 ...

  9. Override和Overload的含义去区别

    最近看了一下关于java的基础知识,对此作了一下搜集整理: java中的继承,方法覆盖(重写)override与方法的重载overload的区别 方法的重写(Overriding)和重载(Overlo ...

最新文章

  1. 怎么提升写代码的能力
  2. [TPYBoard - Micropython之会python就能做硬件 2] 利用micropython控制NOKIA 5110屏
  3. 【KMP】子串拆分(ybtoj KMP-4)
  4. 安卓学习笔记18:常用控件 - 按钮、图像视图和图像按钮
  5. js 实现ReplaceAll 的方法
  6. 2021李宏毅机器学习课程笔记——Recurrent Neural Network
  7. Welcome to NHibernate
  8. 解决Win10打开可执行文件提示为了对电脑进行保护,已经阻止此应用的问题
  9. 掌握这些常见的数据可视化表达方式,成为可视化达人!
  10. 织梦DedeCMS使用教程:留言簿模块
  11. 软件测试人员常用的SQL语句
  12. 开源操作系统期末知识总结
  13. vite简介,使用vite创建项目的优势
  14. 简单的漫画创作项目comicgen
  15. 物理科普读物推荐:《物理精神》——人类文明创新的原动力
  16. DNS域名解析成IP地址------设置主从域名服务器
  17. 服装生产制作型企业如何选择ERP管理系统
  18. 总结Windows XP实用优化技巧大放送(转)
  19. 《Deep Spatio-Temporal Random Fields for Efficient Video Segmentation》论文阅读
  20. selenium+Java鼠标悬浮操作

热门文章

  1. android标题栏添加按钮_2019最新Android常用开源库总结(持续更新,建议收藏)
  2. 【UE Sequencer系列】05-解决角色动画造成的位移问题
  3. SQL Server2012下载
  4. DELL R720系统内存指南
  5. SMC集装阀岛在线选型软件
  6. 恶补tranformer(一)--cv,在看代码,后期补
  7. 各文件夹的含义+单词释义+vs快捷键+sql+操作字符串+vs下载等+Mongo时差8小时
  8. 标准USB设备请求命令
  9. HUAWEI 机试题:整数表达为连续自然数之和(Python解法)
  10. linux jdk1.8 64位下载永久地址,ubuntu,centos,java