若是同一个类中包含了两个或两个以上方法名相同、但有有不一样的参数列表,则称为方法的重载,也可称该方法被重载了。java
重载能够理解为一个类中的多态spa
说明:继承
1.参数列表不一样包括:个数不一样、顺序不一样、类型不一样。
2.仅仅参数变量名称不一样是不能够的。
3.跟成员方法同样,构造方法也能够重载。
4.声明为final的方法不能被重载。
5.声明为static的方法不能被重载,可是可以被在此声明。io
方法的重载的规则:
1.方法名称必须相同。
2.参数列表必须不一样。
3.方法的返回类型能够相同也能够不相同。
4.仅仅返回类型不一样不足以称为方法的重载变量
1.方法的重写: 子类出现了与父类相同方法名称、参数列表和返回类型的方法,这个咱们就称做为方法的重写。权限
2.方法重写的前提: 必需要存在继承的关系。引用
3.什么是时候要使用方法的重写:父类的功能没法知足子类的需求时。方法
方法重写要注意的事项:异常
1.方法重写时, 方法名与形参列表必须一致。
2.方法重写时,子类的权限修饰符必需要大于或者等于父类的权限修饰符。
3.方法重写时,子类的返回值类型必需要小于或者 等于父类的返回值类型。
4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。 Exception(最坏) static
当方法重写时须要父类中原有的方法,可以使用super关键字,该关键字引用当前类的父类。
重写(Overriding)和重载(Overloading)是Java多态性的不一样表现。
通常重写针对子类继承父类,重写父类的方法,经过动态绑定;而重载是同一方法名,参数列表不一样,重载能够理解为一个类中的多态。
在java中重载是由静态类型肯定的,在类加载时就能够取肯定,属于静态分派;而重写是由动态类型肯定的,是在运行时肯定的,属于动态分派。动态分派是由虚方法实现的,虚方法表中存在着各个方法的实际入口地址,若父类中的某个子方法没有被重写,则父类与子类的方法表中的方法地址相同;若重写了,则子方法表的地址指向重写后的地址。
重写与重载之间的区别
方法重载:
一、同一个类中
二、方法名相同,参数列表不一样(参数顺序、个数、类型)
三、方法返回值、访问修饰符任意
四、与方法的参数名无关
方法重写: 一、有继承关系的子类中 二、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同 三、访问修饰符,访问范围须要大于等于父类的访问范围 四、与方法的参数名无关