java函数重载和函数重写

java中,函数重载(overload)和 函数重写(override)是完全不同的两个概念,而这没有任何关系(除了名字有点像)

函数重载(overload):

1、针对同一个类中的一组函数来说的;

2、这组函数中,函数名称相同(一般情况下建议功能相似的函数才做函数重载);

3、形式参数不相同,包括参数的个数不同、参数的类型不同或参数个数和类型都不相同;

4、与函数的返回值类型没有关系

5、在调用函数时会根据参数的类型和个数自动去匹配,决定调用哪个函数。这种匹配是不精确的,会找最精确的,如果没有最精确的,会找次精确的,以此类推,而且这种匹配不需要人为去调用。

函数重写(override):函数重写又称为函数覆盖、方法重写、方法覆盖,其主要特性如下:

1、分别为与两个类中,这两个类有子父类关系(或接口与实现类);

2、声明的方法完全一样(函数名称、参数列表、返回值类型都完全一样);

3、函数的访问权限非private(子类的权限可以比父类的权限大或一样大,不能比父类的权限小);

4、有动态(在运行时刻)绑定(binding)(又称晚绑定)特性:父类的引用引用了子类的对象(或父接口引用了实现类的对象),这个引用去调用函数时,如果该函数构成了重写,那么调用子类的函数,其他情况下只能调用父类的函数(前提是父类必须存在这个函数)。


原文地址:https://www.cnblogs.com/Cilimer/p/4075218.html