重载和覆盖有什么区别?

重载和覆盖有什么区别?

重载和覆盖都是java多态性的不同表现。其中重载是一个类中多态的一种表现,指的是一个类中定义了多个同名的方法,他们要么参数类型不一样,要么参数的各数不一样,或者不同的参数顺序,从而实现重载。

重载注意事项

  1. 重载是通过不同的方法参数来区分的。
  2. 不能方法的访问权限、返回值类型和抛出的异常类型来重载。
  3. 对于继承,如果父类的方法是私有的,就不能再子类中实现重载,如果子类也定义一个同名的方法,那就是一个新的方法,不是重载了。

覆盖是指派生类函数覆盖其基类的方法并对其重写,达到不同的效果。

覆盖的注意事项

  1. 派生类的覆盖方法必须要和基类中被覆盖的方法有相同的函数和参数。
  2. 派生类的覆盖方法的返回值必须要和基类中覆盖方法的返回值相同。
  3. 派生类的覆盖方法的抛出异常必须和基类的抛出异常一致。
  4. 基类中被覆盖的方法不能private,否则子类是定义了一个新的方法而不是覆盖。

重载和覆盖的区别

  1. 覆盖是子类和父类之间的关系,垂直关系;重载同一个类之间方法之间的关系,是水平关系。
  2. 覆盖只能由一个方法或者只能由一对方法产生关系;重载是多个方法之间的关系。
  3. 覆盖是根据对象类型(对象对应存储空间类型)来决定的;而重载关系是根据调用的实参表和形参表来选择方法体的。

我说的可以有点理论,但希望你们能看的懂。不懂得可以来问我,或者找一些详细点的。

你可能感兴趣的:(java基础,重载和覆盖有什么区别?,重载,覆盖)