024.方法覆盖

覆写的定义

  • 当父类中的方法与子类所要求的不一样时,
    在子类中重新定义该方法, 并修改方法体.
    以达到子类所想要的效果.

覆写的原则

一同:

  1. 实例方法签名必须相同.(参数表和方法名一样)
    因此改变的只是方法体.

两小:
2. 子类方法的返回值类型是和父类方法的返回值相同或者是其子类.
3. 子类方法声明抛出的异常类型和父类方法声明抛出的异常类型相同或者是其子类.

  • 子类方法中声明抛出的异常小于或等于父类方法声明抛出异常类型.
  • 子类方法可以同时声明抛出多个属于父类方法声明抛出异常类的子类(RuntimeException 类型除外).

一大:
4. 子类方法的访问权限比父类方法访问权限更大或相等.
即, 若父类方法是 public 子类必须也是 public.
若父类方法是 protected 子类可以是 public 或 protected.

备注

  • 在覆写方法前加上@Override的标签,
    编译器会自动检测接下来的方法是否能够被覆写
  • 只有方法有覆写的概念, 字段并没有

覆写和重载的区别

  • 方法覆写(重写):
    重写是指在派生类中重新对基类中的虚函数重新实现.
    即函数名和参数都一样, 只是函数的实现体不一样.
    这种关系是存在于父类和子类之间的, 是垂直关系.

  • 方法重载:
    重载是指不同的函数使用相同的函数名, 但是函数的参数个数或类型不同.
    调用的时候根据函数的参数来区别不同的函数.
    这种关系是存在于同一个类中的不同方法间的, 是水平关系.

你可能感兴趣的:(Java,笔记)