重载(overloading)和重写(override)方法的区别(面试)

重载和重写只是java语法的一种规则,在《thinking in java》一书中也没有具体定义,记住规则即可。最简单的区别如下图:

具体的区别:

  • 重载(overloading):一般用于在类中实现若干重载的方法,方法名相同而参数形式不同,以下是重载的规则:
  1. 使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型指参数类型、参数个数、不同的参数顺序。
  2. 不能通过访问权限、返回类型、抛出的异常进行重载,原因:因为当在调用时不能指定类信息(权限和返回值等等),编译器不知道你调用了哪个重载方法,这也是某一年名企华为的面试题。
  3. 方法的异常类型和数目不会对重载造成影响。
  • 重写(override):在继承和实现接口中应用的比较多,有如下几个规则:
    重写的方法除了访问权限不一致之外,其他的必须一致
  1. 重写的参数列表必须完全与被重写的方法相同,否则不能称其为重写。
  2. 重写方法的访问修饰符一定要大于被重写方法访问修饰符(public>protected>default>private)。
  3. 重写方法的返回值必须和被重写方法的返回值一致。
  4. 重写方法所抛出的异常必须和被重写方法所抛出的异常一致,或者是其子类关系
  5. 被重写方法不能为private,否则在其子类只是定义了一个新方法,并没有对其进行重写。

重写的记忆方法:只有实现的功能代码不一致,其他的(函数名、参数列表、返回值类型)都必须一致。

补:当父类功能无法满足子类的功能需求时使用继承方式进行重写,实现接口的类中方法亦叫重写。

猜你喜欢

转载自blog.csdn.net/CYLYBYXH/article/details/80950762