您的位置:首页 > 编程语言 > Java开发

重载与重写的区别

2019-07-12 07:19 1936 查看

一、重载

如果同一个类中包含了两个或两个以上方法名相同、但有有不同的参数列表,则称为方法的重载,也可称该方法被重载了。

重载可以理解为一个类中的多态

说明:

1.参数列表不同包括:个数不同、顺序不同、类型不同。
2.仅仅参数变量名称不同是不可以的。
3.跟成员方法一样,构造方法也可以重载。
4.声明为final的方法不能被重载。
5.声明为static的方法不能被重载,但是能够被在此声明。


方法的重载的规则
1.方法名称必须相同。
2.参数列表必须不同。
3.方法的返回类型可以相同也可以不相同。
4.仅仅返回类型不同不足以称为方法的重载

二、重写

1.方法的重写: 子类出现了与父类相同方法名称、参数列表和返回类型的方法,这个我们就称作为方法的重写。

2.方法重写的前提: 必须要存在继承的关系。

3.什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。

方法重写要注意的事项

1.方法重写时, 方法名与形参列表必须一致。 
2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。 
3.方法重写时,子类的返回值类型必须要小于或者 等于父类的返回值类型。 
4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。 Exception(最坏) 

当方法重写时需要父类中原有的方法,可使用super关键字,该关键字引用当前类的父类。

三、重载与重写的区别

       重写(Overriding)和重载(Overloading)是Java多态性的不同表现

       一般重写针对子类继承父类,重写父类的方法,通过动态绑定;而重载是同一方法名,参数列表不同,重载可以理解为一个类中的多态。

       在java中重载是由静态类型确定的,在类加载时就可以取确定,属于静态分派;而重写是由动态类型确定的,是在运行时确定的,属于动态分派。动态分派是由虚方法实现的,虚方法表中存在着各个方法的实际入口地址,若父类中的某个子方法没有被重写,则父类与子类的方法表中的方法地址相同;若重写了,则子方法表的地址指向重写后的地址。

 

重写与重载之间的区别

方法重载: 
1、同一个类中 
2、方法名相同,参数列表不同(参数顺序、个数、类型) 
3、方法返回值、访问修饰符任意 
4、与方法的参数名无关

方法重写: 
1、有继承关系的子类中 
2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同 
3、访问修饰符,访问范围需要大于等于父类的访问范围 
4、与方法的参数名无关
 

       


 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java