Java 方法重载(Overload) 与 方法覆盖(重写Override)

Java 方法重载(Overload) 与 方法覆盖(重写Override)

 

1、方法重载(Overload)

    对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但是参数不一致,那么可以说,一个方法是另一个方法的重载方法。在一个类中不允许定义两个方法名相同,并且参数类型也相同的方法。

重载方法必须满足以下条件:

  1.  方法名相同。
  2. 方法的参数类型、个数、顺序至少有一个不同。
  3. 方法的返回类型、修饰符可以不相同。

2、方法覆盖(Override)

    如果在子类中定义的一个方法,其方法名称、返回类型及参数签名正好和父类中的某个方法的名称、返回类型以及参数签名一致,那么可以说,子类的方法覆盖了父类的方法。

覆盖方法必须满足多种约束:

  1. 子类方法的方法名称、参数签名和返回类型必须父类的方法的名称、参数签名和返回类型一致。。
  2. 子类不能缩小父类的访问权限。
  3. 子类不能抛出比父类更多的异常。
  4. 方法覆盖只存在于子类和父类之间(包括直接父类和间接父类)。
  5. 子类可以定义和父类一样的静态方法。以便在子类中隐藏父类的静态方法。子类隐藏父类的静态方法和子类覆盖父类的实例方法,这两者的区别在于: 运行时, java虚拟机把静态方法和所属的类绑定, 而把实例和所属的实例绑定。
  6. 父类的非静态方法不能被子类覆盖为静态方法。
  7. 父类的私有方法不能被子类覆盖。
  8. 父类的抽象方法可以被子类通过两种方法覆盖: 一是子类实现父类的抽象方法; 二是子类重新申明父类的抽象方法。

 

posted @ 2021-06-15 23:10  邓维-java  阅读(391)  评论(0)    收藏  举报