重载方法

模块 2:Java 核心
第 2 级 , 课程 3
可用

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

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

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

“一言为定。”

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

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

“是的,我知道。”

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

代码 评论
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 方法,它们使用的是不同的参数。编译程序简单识别,然后根据你传递的参数类型调用所需的方法。”

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

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

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

评论 (5)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
哄哄 级别 18,Nanping,China
4 十二月 2024
这个应该属于基础知识~
null 级别 17,Chengdu
12 三月 2021
参数名称相互之前不相关,相互之间?
Bye 级别 13,Nanjing,China
17 五月 2022
应该是的😂
Super Ego 级别 14,Wu Han,China
7 三月 2023
反正就是说一旦编译参数名称不可知
枫行 级别 41,China,China
29 九月 2023
对于那个“不可以”的例子,在实际应用时传入一个3,它就根本不知道要调用哪一个了,因为既可以是a也可以是n