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