函数重载:不同类型重载函数的术语?
Function Overloading: Terminology for different types of overloaded functions?
例如,假设我有这 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);
}
在这种情况下调用函数 #2 是函数 #1 的 "parent" 重载函数是否正确,因为函数 #1 调用它并且两者都是 public?
将函数 #3 称为这些函数的 "recursive" 函数是否也是正确的,或者是否有另一个术语来描述它被 public 函数称为隐藏函数的事实递归调用自身的函数?
我知道这些不是正确的术语,但我想知道的是是否有针对不同类型的重载函数的特定术语的固定术语。
我不愿意定义 Java 语言规范没有定义的任何术语。
简单地说你有3个函数,2个public
和1个private
。它们具有相同的 name 但参数类型不同,因此它们是 overloads.
确实调用自身的函数是递归函数。 JLS 确实定义了该术语,因为 Java 编译器必须支持调用自身的函数。
不要将您的某个函数称为 "parent overload" - 这不是特别有用,而且您对术语 "abstraction" 的使用很特别。
对于这种情况,我没有特定的术语;然而,有一种用于构造函数的模式与此有点相似。 "Telescoping Constructor Pattern" 和使用 "Builder Pattern" 它不直接相同,但有点相同的想法。
例如,假设我有这 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);
}
在这种情况下调用函数 #2 是函数 #1 的 "parent" 重载函数是否正确,因为函数 #1 调用它并且两者都是 public?
将函数 #3 称为这些函数的 "recursive" 函数是否也是正确的,或者是否有另一个术语来描述它被 public 函数称为隐藏函数的事实递归调用自身的函数?
我知道这些不是正确的术语,但我想知道的是是否有针对不同类型的重载函数的特定术语的固定术语。
我不愿意定义 Java 语言规范没有定义的任何术语。
简单地说你有3个函数,2个public
和1个private
。它们具有相同的 name 但参数类型不同,因此它们是 overloads.
确实调用自身的函数是递归函数。 JLS 确实定义了该术语,因为 Java 编译器必须支持调用自身的函数。
不要将您的某个函数称为 "parent overload" - 这不是特别有用,而且您对术语 "abstraction" 的使用很特别。
对于这种情况,我没有特定的术语;然而,有一种用于构造函数的模式与此有点相似。 "Telescoping Constructor Pattern" 和使用 "Builder Pattern" 它不直接相同,但有点相同的想法。