什么是方法重载? [重复](What is method overloading? [dupli

2019-08-18 03:06发布

这个问题已经在这里有一个答案:

  • 什么是“重载” /“过载” /“重载”呢? 8个回答

我发现资源说方法重载是用同样的方法有不同的结果,根据上下文的能力的语言。 不知怎的,当我看到其他的定义,我摔倒了那些并不是全部定义。 是否有更多的方法重载?

Answer 1:

这只是说明它的一个非常普遍的方式。 方法重载允许你取决于“上下文”(其通常的类型或传递参数的数目),以使用单个方法的名称,但“过载它”(提供多于一个的版本)。 由于每个方法是独立的,它们可以引起“不同的结果”。

例如,使用C#,你可以这样写:

void Foo()  // Version with no arguments
{
}

void Foo(int arg) // Version with a single int
{
}

void Foo(string arg1, double arg2) // Version with string and double parameters
{
}


Answer 2:

首先,你应该知道什么是编程签名。 一个函数的签名是其表示; 一个函数的名称及其参数确定其签名。

重载意味着改变一个函数的签名,以满足我们的需求。

看看下面的例子:

int sum(int x, int y, int z) {
    return x + y + z;
}

int sum(int x, int y) {
    return x + y;
}

现在,函数sum()可以通过两种不同的方式被称为:要么你可以用两个参数来调用它,或者你可以用三个参数来调用它。 你已经改变了它的签名,以满足您的需求。 而不是写一个单独的函数用于两个参数的,你把负载上相同的功能,这就是为什么这个被称为超载。



Answer 3:

这就是你有不同的参数名称相同的方法,众说纷纭。

public void kittens(String paws) {

}

public void kittens(String paws, boolean tail) {

}

这两个可独立调用彼此任

kittens("fat"); 

要么

kittens("thin", true);


Answer 4:

在这种情况下的上下文是由该方法的参数签名来确定,即自变量的数目和类型。

例如:

methodName(int x, int y, int w, int h)
methodName(Vector x)

第一种方法的实现将是一个替代:

methodName(new Vector(x, y, w, h))


Answer 5:

一些语言的创建方法/函数具有相同的名称但不同的能力, input / otput参数。

一个典型例子是类constructor overloading在Java示例:

  //Constructor without parameters
  public User() {
  }

 //Constructor with only one parameter
 public User(String username)
 {
 this.username = username;
 }

 //Constructor with two parameters
 public User(String username, int age)
 {
   this.username=username;
   this.age=age;
 }

您有接受不同的参数,当你看到他们在不同的不同构造一类signature



文章来源: What is method overloading? [duplicate]