Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 函数重载:不同类型重载函数的术语?_Java_Function_Methods_Overloading_Terminology - Fatal编程技术网

Java 函数重载:不同类型重载函数的术语?

Java 函数重载:不同类型重载函数的术语?,java,function,methods,overloading,terminology,Java,Function,Methods,Overloading,Terminology,例如,假设我有以下3个重载函数: /** Function #1 */ public static String add(List<String> operands) { return add(operands, 10); } /** Function #2 */ public static String add(List<String> operands, int base) { return Integer.toString(add(Integer

例如,假设我有以下3个重载函数:

/** Function #1 */
public static String add(List<String> operands)
{
    return add(operands, 10);
}

/** Function #2 */
public static String add(List<String> operands, int base)
{

    return Integer.toString(add(Integer.parseInt(operands.remove(0), base),operands, base), base);
}

/** Function #3 */
private static int add(int result, List<String> operands, int base)
{
    if(operands.size() == 0)
    {
        return result;
    }

    result += Integer.parseInt(operands.remove(0), base);

    return add(result, operands, base);
}
/**功能#1*/
公共静态字符串添加(列表操作数)
{
返回加法(操作数,10);
}
/**功能#2*/
公共静态字符串加法(列表操作数,整数基)
{
返回Integer.toString(add(Integer.parseInt(操作数.remove(0),base),操作数,base),base);
}
/**功能#3*/
私有静态整数加法(整数结果、列表操作数、整数基)
{
if(操作数.size()==0)
{
返回结果;
}
结果+=整数.parseInt(操作数.remove(0),基);
返回加法(结果、操作数、基);
}
在这种情况下,调用函数#2是否正确?函数#1的“父”重载函数是否正确,因为函数#1调用它,并且两者都是公共的

将函数#3称为这些函数的“递归”函数也是正确的,还是有另一个术语来描述它被公共函数调用为递归调用自身的隐藏函数这一事实


我知道这些不是正确的术语,但我想了解的是,对于不同类型的重载函数,是否有特定的术语来定义它们的角色。

我不愿意定义Java语言规范中没有的术语

简单地说,你有3个功能,2个
公共
和1个
私人
。它们的名称相同,但参数类型不同,因此它们是重载

实际上,调用自身的函数是递归函数。JLS确实定义了这个术语,因为Java编译器必须支持调用自己的函数


不要将某个函数称为“父重载”-这不是特别有用,而且您使用的术语“抽象”是特殊的;然而,构造函数使用的模式有点类似于此。“伸缩构造函数模式”和使用“构建器模式”并不直接相同,而是有点相同的想法。

旁注:java中的函数应该是camelCase。如果方法是
public
并且是API的一部分,那么您应该期望它可以被使用。@Ahmad谢谢,更正。每天从C#切换到Java时,它会变得非常忙碌;但我不知道在这里大家会同意什么“事实上”的术语。我想你说得对,这三种方法之间有一定的联系,;但这些概念似乎“未命名”。所以从这个意义上说,尽管感觉很有趣;我的感觉是,这个问题是“征求意见”的“边界线”,“特殊性”是我今天的话,明天的“floccinaucini”怎么样?(这是英国议会有史以来最长的一个词)。我已经试着一口气念了好几分钟了。我的同事可能会认为我现在是个疯子。我倾向于说“水牛”水牛@芭丝谢芭,谢谢。我的目标是看看在我为另一个项目编写的代码的注释文档中,是否有一个术语,或者某种简短的方式来解释每个重载函数的作用。但我会把它留给JLS,让大家都能理解。