在一个设置时钟的程序中这样一个函数
int getParameter(String s1,int s2)
{
    String s=getParameter(s1);
     return(s!=null)?Integer.parseInt(s):s2;
 }
解释是经过超载的函数模式,方便用户从网页中得到参数,请问这个函数有什么用?

解决方案 »

  1.   

    你说的“超载”大概是overload吧?你看的什么书,翻译成这个样子,把它扔掉算了。现在我假设你说的就是overload,解释一下。如果同一个类中,a方法(Java中把“函数(function)”称为“方法(method)”)和b方法有同样的名字(name),但是方法签名(signature)不同,这两者就互为overload(覆盖)关系。什么叫方法的名字?什么叫方法的签名?比如说:int getParameter(String s1, int s2);
    String getParameter(String s1);这两个方法的名字都是“getParameter”,但签名不同,第一个方法的签名是getParameter(String, in),第二个是getParameter(String)。也就是说,方法的签名是由方法名和参数类型列表共同构成的。(有一种说法认为返回值类型也是签名的一部分,但是Java不支持仅仅返回值不同的方法覆盖,所以我们不把返回值类型作为签名的一部分。)综上所述,这两个getParameter方法就是互相覆盖(overload)的。用同样一个getParameter调用语句,如果你传递两个参数(第一个是String,第二个是int),就调用第一个方法;如果传递一个String参数,就调用第二个方法。为什么要这样做?为了避免重复代码(Duplicate Code)。因为重复代码是最大的错误之源。说得不清楚,你还有什么疑问吗?
      

  2.   

    谢谢!不过overload应该翻译成什么,不是超载吗?
      

  3.   

    overload 就是 overload
    如果讲超载的话,被交警抓住了要罚款的!
      

  4.   

    overload是“覆盖”,是指同一个类里面同名但是签名不同的方法之间的关系。“重载”是override,是指类继承体系里面签名相同的方法之间的关系。怎么到21世纪了还有人弄错呢?