1. 参数列表:必须与被重写方法的参数列表完全匹配。 
2. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同 
3. 访问级别:一定不能比被重写方法强,可以比被重写方法的弱。 
4. 非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否声明了该异常。 
5. 检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常 
6. 不能重写标志为final,static的方法

重载方法的规则: 
1. 参数列表:被重载的方法必须改变参数列表。 
2. 返回类型:可以改变返回类型。 
3. 修饰符:可以改变修饰符 
4. 异常:可以声明新的或者更广泛的异常。

  1. class Animal {
  2. public void eat(){
  3. }
  4. }

以下列出对于Animal的eat方法各种重写重载实例,根据以上列出的规则,判断其是否合法(以下的方法都属于Animal的子类Horse的方法):
1. private void eat(){}  不能通过编译,非法重写,访问修饰符限制性变强;不属于重载,因为参数列表没有发生改变
2. public void eat() throw RuntimeException{}  能通过编译,属于重写,重写方法可以抛出任何非检查异常。
3. public void eat() throw IOException{}  不能通过编译,非法重写,重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常;不属于重载,参数列表必须发生变化才属于重载
4. public void eat(String food){}  能通过编译,不是重写;合法重载,因为参数列表发生改变了。
5. public String eat(){}  不能通过编译,不是重写,因为其返回类型;不是重载,因为参数列表没有发生改变。
6. public String eat(int n){} 可以通过编译,不是重写;是重载,首先参数列表必须发生变化,返回类型可以发生改变。

对父类被重写的方法做一个变动:

  1. class Animal {
  2. public Animal eat() throws IOException{
  3. return null;
  4. }
  5. }

7.  public Animal eat(){return null;}  可以通过编译,合法重写,可以不抛出异常,只要不抛出新的异常或更广泛的异常就可以。
8.  public Animal eat() throws FileNotFoundException{return null;} 可以通过编译,是重写,属于子类的非检查异常。
9.  public Animal eat() throws Exception{}  不可以通过编译,非法重写,抛出了更广泛的异常。
10.  public Horse eat() {} 可以通过编译,是重写,因为返回类型可以是被重写的返回类型的子类。

1           重载(Overloading) 
(1)       方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时
存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
(2)       Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具
有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型
来决定具体使用哪个方法, 这就是多态性。
(3)       重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同
也可以不相同。无法以返回型别作为重载函数的区分标准。

2     重写(Overriding)
(1)    父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某
            
方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,
子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不
动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又
称方法覆盖。
(2)    若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,
则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键
字引用了当前类的父类。
(3)    子类函数的访问修饰权限不能少于父类的;

总结:重载和重写(覆盖)。 
    
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写
Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性
的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法
被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而
言,父类中的定义如同被“屏蔽”了,而且如果子类的方法名和参数类型和个数都和
父类相同,那么子类的返回值类型必须和父类的相同;如果在一个类中定义了多个同
名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载
(Overloading)。Overloaded的方法是可以改变返回值的类型。也就是说,重载的返回
值类型可以相同也可以不同。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhu_apollo/archive/2007/10/28/1852542.aspx

重载和重写的区别。。。。相关推荐

  1. C++中重载与重写函数区别及虚函数(转载)

    C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...

  2. java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别

    目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...

  3. 开课吧-Java常见面试题:重载和重写的区别?

    重载和重写的区别? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同.个数不同.顺序 ...

  4. C#重载和重写的区别

    C#重载和重写的区别  重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同等. 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无 ...

  5. 继承、多态,重载、重写的区别与总结

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  6. JAVA中重写和实现的区别_Java中重载和重写的区别

    Java中重载和重写的区别 1.1重载是什么 Overloading   方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...

  7. 重载和重写的区别有哪些?

    重载和重写的区别有以下几点: 一.定义上的区别: 1.重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 2.覆盖(也叫重写)是指在派生类中重 ...

  8. C#重载与重写的区别

    前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概述与总结. 文章目录 一.重载与重写的区别 二.重载与重写的特征 三.重载与重写的对比 一.重载与重写的区别 重载必须在同一 ...

  9. java中重载与重写的区别

    最近了解一下重载和重写  一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...

  10. 二十三、Java类中重载和重写的区别

    @Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

最新文章

  1. .exp文件_exp及expdp的主要区别及常用的导入导出操作
  2. php domdocument getattribute,PHP DOMElement getAttribute()用法及代码示例
  3. SonarQube4.4+Jenkins进行代码检查实例之三-单元测试分析
  4. python 百度百科 爬虫_python简单爬虫
  5. 支付宝支付系统繁忙,请稍后再试(ALI64)错误解决
  6. Mac使用sdkmanager从官网下载新版android SDK
  7. 开启MySQL的binlog日志
  8. 客户管理软件系统源码
  9. 总结:Oracle 递归查询
  10. 等级保护三级基本要求
  11. 大觉寺-阳台山穿越记
  12. grpc原理及四种实现方式
  13. 想要制作出好看的软蜡笔画?来看这份JixiPix Pastello Pro操作指南!
  14. graphpad画生存曲线怎么样去掉删失点_Graphpad 作图教程 | 这份超详细的生存曲线绘制指南,科研新手一看就会!...
  15. Comet OJ - Contest #5 迫真小游戏
  16. 如果你的天猫魔盒不能看了
  17. 拼多多有哪些API?
  18. 《 QT5.9 c++ 开发指南》各种常见图表的绘制(一个例子让你不再担心表图的绘制)
  19. 【Maven】你好,Maven >>> 与Maven的初次见面~
  20. 解决Mac无法关闭80端口,无法将hosts域名指向本地80端口

热门文章

  1. InDesign 教程如何更改字体和字体大小?
  2. C/C++的内存分配?栈和堆的区别?为什么栈快?
  3. Delphi中的线程类--之(1)
  4. 针对list集合的操作,按照某一字段,对另一个字段进行归类
  5. 高考失利后,属于我的大学本科
  6. 在win10上编译webRTC(问题篇)
  7. pyqt5按钮拖拽,实现拖拽新增和拖拽移动
  8. Java中的字符串反转方法
  9. 单片机可以用python编程吗,python可以单片机编程吗
  10. STM32堆栈溢出的主要的问题和现象