重载(overload)、重写(overrider)、重构(Refactoring)

一、函数重载(overload)

函数重载是一个类中声明了多个同名的方法,但有不同的参数个数和参数类型。是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
重载Overloading是一个类中多态性的一种表现。

重载的规则:

  1. 必须具有不同的参数列表;

  2. 可以有不同的返回类型,只要参数列表不同就可以了;

  3. 可以有不同的访问修饰符;

  4. 可以抛出不同的异常;

二、 函数重写(override)

函数重写是指在子类中声明与父类同名的方法,从而覆盖了父类的方法。重构解决了子类与父类的差异问题。

重写的规则:

  1. 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。

  2. 返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。

  3. 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

  4. 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:

父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

三、重构(Refactoring):

即只是和父类的方法名相同,方法的签名并不相同,不是同一个函数,改善、优化函数;

重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

定义强调是在不改变"软件之可察行为"前提下,不改变"软件之可察行为"就是说让修改不影响外部使用程序(程序员),在其外部来看,程序的行为和结果没有任何的变化.重构只是对程序内部结构进行调整,让代码更加容易理解,然后更容易维护。

任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。"
Martin Flower—《重构》

总结

overload(重载)

1. 参数类型、个数、顺序至少有一个不相同。 

2. 不能重载只有返回值不同的方法名。

3. 存在于父类和子类、同类中。

override(重写)

1. 方法名、参数、返回值相同。

2. 子类方法不能缩小父类方法的访问权限。

3. 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

4. 存在于父类和子类之间。

5. 方法被定义为final不能被重写。

重构(Refactoring)

仅仅起到优化代码的作用,使得代码更直观,容易修改、便于拓展与维护。

以上

你可能感兴趣的:(重载(overload)、重写(overrider)、重构(Refactoring))