Java基础补充 重载与重写

  • 方法签名
    • 方法名 + 参数列表(参数类型,参数数目)去标识一个方法
    • 为什么不包括返回值类型呢?
      调用具有返回值的函数的时候并不一定需要去接收返回值,如果存在方法签名相同但返回值类型不同的两个函数(Java中不允许这种情况的存在),我们直接调用时就会产生歧义
  • 方法重载
    • 同类中的方法,方法名相同但参数列表不同(对返回值没有限制,但返回值类型不同的情况还是比较少的)
    • 重载也体现了多态性,我们可以称之为编译时多态,因为在编译时我们已经能够确定到底调用哪个最佳匹配的函数
  • 方法重写(覆盖)
    • 子类中声明方法签名和返回值都与父类非private方法相同的方法,这就是覆盖;这时子类中的方法若想调用父类方法只能显式super
    • 若返回值不同,这仍然是不允许的(可以是父类方法返回值类型的子类),因为子类在逻辑上可以说已经拥有了父类的所有非private方法,那么就不能存在签名相同返回值类型不同的两个方法
    • 权限修饰符不能比父类的更严格(都是为了多态啊)

西瓜要挖着吃

一个通往大佬之路的男人

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注