就我的理解  方法的重载目的是看起来清晰  你一看这几个方法名字都一样,就知道它们做同一件事 同样 你对不同的对象做同一件事就可以使用同一种方法   比如 java.lang.Math类的abs方法  不管你想得到一个double值,float值,int值或者long值的绝对值  都可以使用该方法
   如果你使用不同的方法名  如abs1,abs2,abs3,abs4  那么 我就要记四个得到绝对值的函数  当我想得到一个int值的绝对值时  我必须要记得他时abs3而不是abs2或abs4  否则就会出错  这样对使用你的类的人来说是很麻烦的

解决方案 »

  1.   

    另:当然你可以把四个方法用absDouble,absFloat,absInt,absLong来区分,但我一样要多记三个方法。而且在方法有多个参数的时候,很难让人知道你是要对不同的参数做同一件事
      

  2.   

    呵呵,如果你写的代码,只有你自己调用,那么你分开写,和一起写,也许不会造成多大的不同,不过如果考虑你的代码会被很多人调用,那就打不相同了。。比如说,咱就拿Math.abs作为参考,来看看这个问题哦。假如你现在把这个函数分成了不同的几个,floatabs,intabs,doubleabs之类的。
    那么别人调用的时候,就麻烦大了,别人在调用的时候,首先必须判断自己的的数据类型。。
    而且这种数据类型可能会在运行期变化你说这咋办呢??
      

  3.   

    俗话说没有规矩不成方圆,这个世界时有规矩的,程序设计也是一样的。
    关于方法的命名也是有规矩的,完成同样的功能就必须使用同样的方法名。(你自个儿在家里写的程序可以不遵守这个规矩)
    理由:接口统一,意义明确。
    以上面提到的abs为例,如果定义为abs1,那么我要问一下后面的1是什么意思?1的意义不明确,恐怕你要用大段的文字来说明为什么用1而不用0,-1,2等。
    如果定义为absDouble,那么我要问一下,对于double和Double这两种类型的方法,你将怎样定义他们的abs方法名?(发现命名资源紧缺了吧!)这还只有一个参数,如果再加上两个参数,三个参数,四个参数的方法,恐怕你光为这些方法定义名字就得头大好多天了!