从前面可以看到,GregorianCalendar类有多个构造器。可以使用:
- GregorianCalendar today = new GregorianCalendar();
或者
- GregorianCalendar deadline = new GregorianCalendar(2099, Calendar.DECEMBER, 31);
这种特征叫做重载(overloading)。如果多个方法(比如,GregorianCalendar构造器方法)有相同的名字、不同的参数,便产生了重载。编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选出相应的方法。如果编译器找不到匹配的参数,或者找出多个可能的匹配,就会产生编译时错误(这个过程被称为(重载解析(overloading resolution)。)
注释:Java允许重载任何方法,而不只是构造器方法。因此,要完整地描述一个方法,需要指出方法名以及参数类型。这叫做方法的签名(signature)。例如,String类有4个称为indexOf的公有方法。它们的签名是
- indexOf(int)
- indexOf(int, int)
- indexOf(String)
- indexOf(String, int)
返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。