天天看点

Java基础之方法重载

在日常生活中,相同的词可以表达多种不同的含义。而把这一思想放到程序设计语言当中,用“重载”来代表。特别是含义之间的差别很小的时候,这种表达方式的作用就显得的尤为重要。方法的重载在Java语言中可以说是随处可见。那么我们应该如何去判断方法的重载那?

  • 区分重载的方法

Java是如何找到你调用的方法是哪一个的那?其实规则很简单:每个重载的方法都必须有一个独一无二的参数类型列表。

对规则进行简单的理解,不难发现,对于名字相同的方法,除了参数类型的差异之外,几乎没有其他方法来区别他们。有的人可能会说,除了参数类型之间的差异之外,还有就是参数顺序的不同也是可以分辨的。不过,一般情况下,我们是不会这么做的,因为从代码的维护性能来看,这无疑是一种负担。

  • 以返回值来区分重载方法

有的人可能又会想到:“区分方法重载的时候,不仅可以用类名和方法的形参列表作为标准,还有不同的就是用方法的放回值来区分”比如下面的两个方法,即便他们有同样的方法名和形参,但却很容易的可以区分他们:

void f(){}
int f(){return 1;}
           

Java编译器可以根据具体语境做出调用。比如在int x=f()中,编译器可以很清楚的知道是调用第二个f()方法。但是,我们在开发过程中,并不会太过多的关注方法的返回值,真正关注的是方法在调用的过程中所达到的效果有没有实现。所以,我们关注更多的是形参。如果出现代码中有一段这样的调用方法:

f();
           

这个时候,Java编译器该如何做出判断?所以,根据方法的返回值来区分重载方法是行不通的。 

  • 基本类型的重载问题

在进行基本类型的重载方法过程中,如果实参类型小于形参类型,实参类型会自动提升。但是,在这一过程中,char型会直接提升到int型。如果实参小于形参的话,会执行窄化转换。但是这一过程中,需要注意形参的范围。

参考文献:《Java编程思想》