重载:允许多个名称相同但是参数列表唯一的方法存在。
为什么Java需要支持方法重载:
1,在程序设计的时候,给方法起名很重要——它可以提高代码的可读性。但在很多场景中虽然是同一个动作,但是入参和变现可能会有差异。比如eat这种方法,可以有筷子、叉子、勺子,那么当工具不同的时候方法如何命名呢?除了通过方法名区分之外方法重载是一个很不错的方式。
2,多个构造方法。其他方法你可以通过不同方法名区分,但是多个构造方法你就没辙了吧?所以多个构造方法是Java支持方法重载的重要因素之一。
如何实现方法重载?
方法重载的话,肯定得有标志能区分出不同的方法,不然编译器不知道调用哪个方法,程序员也可能懵逼。
一个方法就那么几个修饰词:访问权限、返回值、方法名、参数列表。方法名首先pass,然后访问权限对外,所以也pass,剩下的就是返回值和参数列表了。
首先返回值:
public void f(Object obj){......}
public int f(Object obj){......}
如果调用的时候是int a = f(new Object()),那显然是可以知道调用的哪个方法。
但对于很多时候我们调用方法可能 并不关注返回值,那么此时的方法调用:
f(new Object())
你如何知道调用的是哪个方法?你都不知道编译器咋知道?
所以,返回值并不能实现方法重载。
那么就只剩下参数列表了。
只要能保证参数列表唯一就可以支持方法重载,那么我们能通过类型或者顺序去支持方法重载么?答案是肯定的。
对于方法:
public void f(int a, String str){......}
如果调用f("bac", 12),显然是报错的,那就说明参数列表类型有次序的,所以参数顺序的不同是可以实现方法重载,但是一般不建议这样做——代码的可读性会降低。
所以,参数列表唯一是实现方法重载的唯一表现!
本文介绍了Java方法重载,即允许多个同名但参数列表唯一的方法存在。阐述了Java支持方法重载的原因,一是解决同一动作不同入参时的命名问题,二是支持多个构造方法。还说明了实现方法重载不能依靠返回值,只能保证参数列表唯一,参数顺序不同虽可行但不建议。
1454

被折叠的 条评论
为什么被折叠?



