这个问题已经在这里有一个答案:
- 什么是“重载” /“过载” /“重载”呢? 8个回答
我发现资源说方法重载是用同样的方法有不同的结果,根据上下文的能力的语言。 不知怎的,当我看到其他的定义,我摔倒了那些并不是全部定义。 是否有更多的方法重载?
这个问题已经在这里有一个答案:
我发现资源说方法重载是用同样的方法有不同的结果,根据上下文的能力的语言。 不知怎的,当我看到其他的定义,我摔倒了那些并不是全部定义。 是否有更多的方法重载?
这只是说明它的一个非常普遍的方式。 方法重载允许你取决于“上下文”(其通常的类型或传递参数的数目),以使用单个方法的名称,但“过载它”(提供多于一个的版本)。 由于每个方法是独立的,它们可以引起“不同的结果”。
例如,使用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
{
}
首先,你应该知道什么是编程签名。 一个函数的签名是其表示; 一个函数的名称及其参数确定其签名。
重载意味着改变一个函数的签名,以满足我们的需求。
看看下面的例子:
int sum(int x, int y, int z) {
return x + y + z;
}
int sum(int x, int y) {
return x + y;
}
现在,函数sum()
可以通过两种不同的方式被称为:要么你可以用两个参数来调用它,或者你可以用三个参数来调用它。 你已经改变了它的签名,以满足您的需求。 而不是写一个单独的函数用于两个参数的,你把负载上相同的功能,这就是为什么这个被称为超载。
这就是你有不同的参数名称相同的方法,众说纷纭。
public void kittens(String paws) {
}
public void kittens(String paws, boolean tail) {
}
这两个可独立调用彼此任
kittens("fat");
要么
kittens("thin", true);
在这种情况下的上下文是由该方法的参数签名来确定,即自变量的数目和类型。
例如:
methodName(int x, int y, int w, int h)
methodName(Vector x)
第一种方法的实现将是一个替代:
methodName(new Vector(x, y, w, h))
一些语言的创建方法/函数具有相同的名称但不同的能力, 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
。