重载
有些类有多个构造器。例如,可以如下构造一个空的StringBuilder对象:
var messages = new StringBuilder();
或者,可以指定一个初始字符串:
var todoList = new StringBuilder("To do:\n");
这种功能叫做重载(overloading)。如果多个方法(比如,StringBuilder构造器方法)有相同的名字、不同的参数,便出现了重载。编译器必须挑选出具体调用哪个方法。它用各个方法首部中的参数类型与特定方法调用中所使用的值类型进行匹配,来选出正确的方法。如果编译器找不到匹配的参数,就会产生编译时错误,因为根本不存在匹配,或者没有一个比其他的更好(这个查找 匹配的过程被称为重载解析(overloading resolution))。
注:Java允许重载任何方法,而不只是构造器方法。因此,要完整的描述一个方法,需要指定方法名以及参数类型。这叫作方法的签名(signature)。例如,String类有4个名为 indexOf 的公共方法。它们的签名是
indexOf(int)
indexOf(int,int)
indexOf(String)
indexOf(String,int)
返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却有不同返回类型的方法