java重载和重写的区别

一、重载

重载方法的规则:

1、重载是针对在同一个类中。

2、重载方法名一个样。

3、参数列表:被重载的方法必须改变参数列表。

4、返回类型: 可以改变返回类型。

5、修饰符:可以改变修饰符。

6、异常:可以声明新的或者更广泛的异常。

其中:

  1. 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现,属于编译时多态。

  2. Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

  3. 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

二、重写(覆盖)

1、重写是父类和子类之间的多态性。

  1. 参数列表:必须与被重写方法的参数列表完全匹配。

  2. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同 。

  3. 访问级别:一定不能比被重写方法强,可以比被重写方法的弱。

  4. 非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否声明了该异常。
    6 检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常 。

  5. 不能重写标志为final,static的方法 。

  6. 父类与子类之间的多态性,是运行时多态或者编译时多态,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

  7. 若子类中的方法与父类;中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

3. 子类函数的访问修饰权限不能少于父类的;

总结:

重载和重写(覆盖)。

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。

子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了,而且如果子类的方法名和参数类型和个数都和父类相同,那么子类的返回值类型必须和父类的相同;如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。也就是说,重载的返回值类型可以相同也可以不同。

运行时多态和编译时多态参考:http://blog.csdn.net/why\_still\_confused/article/details/51295707

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java第二次作业

(一)学习总结1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?(1)在对面向对象程序中构造方法的主要作用是为类中的属性初始化。在构造方法中要注意以下几点①构造方法的名称必须与类名称一致②构造方法的声明处不能有任何返回值类型的说明③不能在构造方法中使用return返回一个值(2)构造方法的重载就

Typescript 常见的几种函数重载方法详解与应用示例

所谓的重载,其实就是使用相同的函数名,传入不同数量的参数或不同类型的参数,以此创建出多个方法或产生不同结果。1\.最常见的,也就是根据定义傻瓜式地判断参数类型与数量functionshowPerson(name,...others){console.log(name,others)}

2019年Java中高级面试题总结(7)

81、说出几条Java中方法重载的最佳实践?下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。a)不要重载这样的方法:一个方法接收int参数,而另个方法接收Integer参数。b)不要重载参数数量一致,而只是参数顺序不同的方法。c)如果重载的方法参数个数多于5个,采用可变参数。82、在多线程环境下

C++重载双目运算符(2)(对象与数之间)

有两种方法:(1)采用重载双目运算符方式(2)1.类型转换函数(将类的对象转换为其他数据类型)2.转换构造函数(将其他类型转换为类的对象)(仍然要配合重载双目运算符的方式,因为最终实现的是类的两个对象相加)(注意:类型转换函数和转换构造函数不可同时使用,会出现二

2019年Java中高级面试题总结(7)

81、说出几条Java中方法重载的最佳实践?下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。a)不要重载这样的方法:一个方法接收int参数,而另个方法接收Integer参数。b)不要重载参数数量一致,而只是参数顺序不同的方法。c)如果重载的方法参数个数多于5个,采用可变参数。82、在多线程环境下