java方法的覆盖和重载

2021/01/19 Java基础知识 共 841 字,约 3 分钟
闷骚的程序员
口诀: 同名同参同返回叫覆盖;同名异参叫重载。(参:参数的顺序、数据类型和个数) 覆盖异常非必须,但是范围只能小;覆盖方法时,范围(权限)只能大。

1. 覆盖与重载

1.1 覆盖

  1. 同名同参同返回叫覆盖(覆盖是父子类之间)。
  2. 方法重写:也叫做覆盖。子类继承父类时,将父类的成员变量和成员方法一同继承下来成为子类自己的。此时如果该成员变量或者成员方法不是private或者static的,则子类就存在对该成员和方法进行重写的可能。

tips:默认分情况,私有静态构造不继承。
覆盖原则:

  1. 对于父类中default的成员,如果子类和父类在同一个package中,则子类可以覆盖父类的default成员;如果子类和父类不在同一个package中,则子类不能覆盖父类的default成员。
  2. 对于父类的构造方法,子类始终无法继承。
  3. 对于父类中private、static的成员子类始终无法覆盖。
  4. 子类可以继承的,不一定能够访问;但是只要是子类能够访问的,子类就一定能够覆盖(重写)。
  5. 子类重写继承自父类的成员和方法,属于java多态性的体现之一。

1.2 重载

  1. 同名异参叫重载(重载是同一个类里面)。
  2. 方法重载:同一个类中的相同的方法名称可以实现不同的功能;着重体现在同名方法的参数顺序、参数类型、个数不同。

tips:

  1. 方法重载也属于java多态性的体现之一。
  2. 程序调用一个方法,自动根据传递进去的实际参数的类型、个数和顺序等确认调用的是哪一个形态的方法。

1.3 二者区别

  1. java中同一个类之间,是不允许出现完全相同的方法的。
  2. 同一个类中,两个方法的名称相同、方法的参数顺序、参数类型和参数个数相同的方法叫做完全相同的方法。
  3. 对于重载来说,因为是在同一个类中,方法名称相同,所以必须要求方法的参数不同。
  4. 对于覆盖来说,因为子类覆盖父类的方法,所以必须要求名称相同、参数相同、返回值类型相同,才认为是同一个方法,即覆盖的方法除了方法体中的内容不同外其他的方法结构完全相同。
  5. 使用方法覆盖、重载的好处是提高代码的复用率,二者都是java多态性的体现。

文档信息

Search

    Table of Contents