作为一个主要写Python语言的程序员,在学习Java的过程中,却一直搞不懂方法的重载和重写,直到在学习时听见一个叫“方法签名“的词,那么什么是方法签名呢?借用书中一句话:
Definition: Two of the components of a method declaration comprise the method signature—the method’s name and the parameter types.
翻译过来就是,一个方法的声明是由方法名和参数类型决定的。
重载和重写不同的是,如果方法签名如果不同,就是重载,重载方法是一个新方法;如果方法签名相同,并且返回值也相同,就是重写。
在Java中,函数签名包括函数名,参数的数量、类型和顺序。例如:
test(String[] x);
test(String x);
它们函数名相同,参数类型不同,方法签名不同。
test1(String x);
test2(String x);
它们参数类型相同,方法名不同,方法签名不同。
test(String x,inty);
test(int y,String x);
它们方法名相同,参数类型顺序相反,方法签名不同
int test(intx)
String test(intx)
int test(int y)
很明显,它们的方法名相同,参数类型相同,方法签名相同。
注意事项:方法名相同,方法参数相同,但方法返回值不同,按理说,是相同方法,但在Java程序中,出现这种情况,编译器会报错。