Java-方法签名

  作为一个主要写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,int y);
test(int y,String x);

它们方法名相同,参数类型顺序相反,方法签名不同

 

int test(int x) 
String test(int x)
int test(int y)

很明显,它们的方法名相同,参数类型相同,方法签名相同。

注意事项:方法名相同,方法参数相同,但方法返回值不同的两个方法,这时,方法签名相同,实际上是相同方法,在同一个类中中,不允许出现相同方法,这时编译器会报错,因为会出现在调用该方法时候,由于方法签名一致,程序将不知道是调用哪个方法。

posted @ 2020-10-22 23:15  FelixBlog  阅读(435)  评论(0)    收藏  举报