方法重载(Overload)是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。
Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。
调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。
注意:方法重载的返回值类型通常都是相同的。
方法重载的目的是,功能类似的方法使用同一名字,更容易记住,因此,调用起来更简单。
举个例子,String
类提供了多个重载方法indexOf()
,可以查找子串:
-
int indexOf(int ch)
:根据字符的Unicode码查找; -
int indexOf(String str)
:根据字符串查找; -
int indexOf(int ch, int fromIndex)
:根据字符查找,但指定起始位置; -
int indexOf(String str, int fromIndex)
根据字符串查找,但指定起始位置。
例子:
public class Main { public static void main(String[] args) { String s = "Test string"; int n1 = s.indexOf('t'); int n2 = s.indexOf("st"); int n3 = s.indexOf("st", 4); System.out.println(n1); System.out.println(n2); System.out.println(n3); } }
例子二:
在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名方法。例如,在Hello
类中,定义多个hello()
方法:
class Hello { public void hello() { System.out.println("Hello, world!"); } public void hello(String name) { System.out.println("Hello, " + name + "!"); } public void hello(String name, int age) { if (age < 18) { System.out.println("Hi, " + name + "!"); } else { System.out.println("Hello, " + name + "!"); } } }
这种方法名相同,但各自的参数不同,称为方法重载(Overload
)。