Java中的⽅法覆盖(Overriding)和⽅法重载(Overloading)
是什么意思?
  ⽅法覆盖也称为重写,重写即⼦类重新定义了⽗类的⽅法。
重写:
  1、重写的⽅法必须与原⽅法有相同的⽅法名、参数列表和返回值类型(Java SE5之后返回值类型可以是其类型的⼦类型)
  2、被重写的⽅法不能是final类型,因为final类型⽆法重写
  3、被重写的⽅法不能是private,因为private⽆法继承,⽽继承是重写的前提
  4、被重写的⽅法不能为static,如果⽗类中的⽅法为静态,⽽⼦类的⽅法不是静态的,但是两个⽅法除了这⼀点其他都满⾜重写条件,那么会发⽣编译错误,反之亦然。如果⼦类和⽗类中的⽅法都是静态的,并且满⾜重写条件,但仍然不会发⽣重写,因为静态⽅法是在编译时把静态⽅法和类的引⽤进⾏匹配。
  5、重写的⽅法的访问权限不能⼩于原⽅法
  6、重写抛出的异常的范围不能⼤于原⽅法
  7、重写是在运⾏是发⽣的,JVM会在代码运⾏时作出决定。
  ⽅法重载简称重载,重载即同⼀个类中两个或多个⽅法名相同但参数不同的情况
重载:
  1、⽅法名必须相同
  2、参数列表必须不同(参数的个数,类型,顺序不同)
java重写和重载的区别  3、⽅法的返回类型可以相同也可以不同
  4、仅仅返回值类型不同不⾜以成为⽅法的重载
  5、重载是发⽣在编译时的,因为编译器可以根据参数类型来选择使⽤哪个⽅法
重写和重载的区别:
  1、重写只能⽤于⼦类重写⽗类的⽅法,⽽重载⽤于同⼀类中的所有⽅法
  2、重写的参数列表必须相同,重载的参数列表必须不同
  3、重写要求返回值类型必须⼀致或是其⼦类,重载没有要求
  4、重写对⽅法的访问权限和抛出异常有特殊的要求,⽽⽅法的重载没有这⽅⾯的限制
  5、⽗类的⽅法只能被同⼀⼦类重写⼀次,⽽⼀个⽅法可以在所有类中被重载很多次
  6、重写是运⾏时的多态,重载是编译时的多态

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。