覆盖(重写)
概念:当子父类有相同的函数和参数列表时,子类的函数会覆盖父类的函数!
1.发生方法重写的两个方法的方法名、参数列表必须完全一致(子类重写父类的方法) ,返回值必须是父类方法返回值的子类(协变返回类型)。
2.子类抛出的异常不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
所以唯一可能返回值不一样的就使子类方法返回值是父类方法返回值的子类,其他情况编译错误。
重载
1、针对同一个类中的一个函数来说的;
2、这组函数中,函数名称相同(一般情况下建议功能相似的函数才做函数重载);
3、形式参数不相同,包括参数的个数不同、参数的类型不同或参数个数和类型都不相同;
4、与函数的返回值类型和函数权限没有关系
5、在调用函数时会根据参数的类型和个数自动去匹配,决定调用哪个函数。这种匹配是不精确的,会找最精确的,如果没有最精确的,会找次精确的,以此类推,而且这种匹配不需要人为去调用。
区别:
重载只看参数列表,而覆盖是保证函数相同!