重载(Overloading )
(1)方法重载是统一处理类不同类型数据的手段。 同时存在多个同名函数,且具有不同的参数数/类型。
重载加载是类中多态性的表现。
)2) Java方法重载是指可以创建多个方法,这些方法在类中具有相同的名称,但具有不同的参数和不同的定义。
在调用方法时,多态性往往取决于传递给它们的参数的数量和类型,具体决定要使用哪个方法。
)重载时,方法名称相同,但参数类型和数量不同。 返回值的类型可以相同也可以相同。 返回类型不能作为重载函数的区分标准。
最常用的是构造函数的重载。
重载规则:
1、具有不同的参数列表;
2、可以有不同的返回型。 参数列表不同即可;
3、可以有不同的访问修饰符;
4、可以抛出不同的异常
重写(Overriding )
)1)父类和子类之间的多态性重新定义父类的函数。 在子类中定义方法时,如果与该方法的父类具有相同的名称和参数,则该方法将被重写。 在Java中,子类继承父类的方法,而不需要重写同一方法。 但是子类可能希望对父类的方法进行一定的修改,而不是直接继承父类的方法,需要采用方法重写。 方法的改写也称为方法的覆盖。
)如果子类中的方法与父类中的任何方法具有相同的方法名称、返回类型和参数表,则新方法将复盖原始方法。 如果需要父类特定的方法,请使用引用当前类的父类的super关键字。
)3)子类函数的访问限定权限不能小于父类。
重写的主要优点是可以定义一个子类的特定特征。
重写方法只能重写父类的非私有方法。
重写是指子类重写允许父类访问的方法的实现过程,这样既不能更改返回值,也不能更改参数。 也就是说,案例不变,核心重写!
改写方法规则:
1、参数列表必须与改写的方法完全相同。 否则,就不能说是改写,而是过载。
2、返回的类型必须与重写方法的返回类型相同。 否则,就不能说是重写,而是重载。
3、访问修饰符的限制一定不小于重写方法的访问修饰符(publicprotecteddefaultprivate )
4、改写方法一定不能比新的检查异常或改写方法更高的外套扔更宽的检查型异常。 例如:
父类中的一个方法涂有检查异常IOException,重写该方法可以抛出Exception,只能抛出IOException的子类异常,并且可以抛出非检查异常。
声明为final的方法不可重写。 如果子类和父类位于同一包中,则子类可以重写父类中的所有方法,但声明为private和final的方法除外。
方法重载是类的多态性表示,方法重写是子类和父类的多态性表示。