重载与重写的区别

222 阅读1分钟

重载(Overloading)与重写(Overriding)的区别总结

重载重写
发生在同一类中发生在父子类中
方法名必须相同方法名和参数类型、个数、顺序必须相同
参数类型、个数、顺序至少有一个不同函数体内容不同
返回类型和访问修饰符可以不同(无关,有坑【1】)里式替换原则
返回值不同,其他都相同不算重载(补坑【1】)final、static、private方法不能重写
参数重载外壳不变,核心重写

里式替换原则

重写有以下三个限制:

  • 访问权限:子类方法 >= 父类方法
  • 返回类型:子类方法 = 父类方法返回类型或为其子类
  • 抛出的异常类型:子类方法 = 父类抛出异常类型或为其子类

拓展

函数的构成:

修饰符 返回值类型 方法名(参数类型 参数名){
    ... 
    方法体 
    ... 
    return 返回值; 
}