方法重载在我看来其实只是一个概念,没有什么复杂的意思,英文是Overload,表示的意思就是:同一个类中2个或者多个方法的名字相同,但是方法的参数不同。参数不同又分为2种情况:1.参数的数量不同,2.参数的类型不同,而方法的返回值对重载没有任何影响,因为你调用方法的时候不会调用方法类型,只会用到方法名和参数。
方法重载的概念其实最常见的地方就是构造器,常常是一个类中有多个构造方法,它们有相同的名字,但是往往参数不同,这样就可以使用不同情况下的初始化任务。有人会问了,这样岂不是容易混淆,为什么不用不同的名字呢?
我觉得,重载是有一定道理的,如果一个类中有一些功用类似的方法,如果用同样的方法名(可读性强的名字)和不同的参数来定义它们,岂不是更易于理解。
举个例子吧
比如实际开发中,你要记录人的名字,那么你写一个函数叫做setName(),里面需要一个参数,可能是男人,女人,小孩,老人等等各种分类。这个时候你就要去写很多方法,比如setNameForWoman(),setNameForMan(),setNameForChild(),累不累?假如有一个方法就叫setName(),它有一些重载方法,分别为setName(Man man),setName(Woman woman),setName(Child child),以后无论你有任何分类,你都知道,就这么一个方法,我给不同的参数就行,简洁明了,逻辑清晰。
当然你不想用也无所谓,只要你自己觉得看着舒服,但是用重载对用户来说确实要舒服一些。还有,构造器,你没有办法,只有一个名字,要想实现不同情况下的初始化,得写多个构造方法,这个时候就必须使用重载了。所以养成习惯写重载方法可以简化一些代码,使得代码逻辑更加清晰。