“你好,阿米戈!我会给你介绍方法重载。”

“你还可以重载它们?!天哪!”

“你可以用它做很多事情,但我们不会立即应用它。”

“一言为定。”

“重载是一个非常简单的操作。事实上,它不是方法操作,虽然有时候它会和一个令人恐怖的名字参数多态联系在一起。”

你最需要记住的一件事就是,每个类都必须有一个唯一的名称。

“是的,我知道。”

“然而,那也不全对。我是说,那根本不对。一个方法并不一定要有一个唯一的名称。必须保持唯一的是方法的名称及其参数类型的集这两者的组合。这个组合也被称为方法签名。”

代码 评论
public void print();
public void print2();
这个可以。这两个方法有唯一的名称。
public void print();
public void print(int n);
这个也可以。这两个方法有唯一的名称(签名)。
public void print(int n, int n2);
public void print(int n);
这两个方法名称依然是唯一的。
public int print(int a);
public void print(int n);
这个不可以。这两个方法不唯一,尽管传递的是不同的类型。
public int print(int a, long b);
public long print(long b, int a);
但这个是可以的。方法参数是唯一的。

“我在其他地方看到过。”

“是的。当你输入 System.out.println,IntelliJ IDEA 会推荐很多不同版本的 print 方法,它们使用的是不同的参数。编译程序简单识别,然后根据你传递的参数类型调用所需的方法。”

“太难了。但那不是多态。”

“或者更确切地说,那不是方法重写。

顺便说一下,我想指出的是参数名称相互之前不相关。编译过程中会被丢失。一旦方法被编译,我们只可以知道方法的名称和参数类型。