为何不能通过返回值来区分重载方法?
在java中,重载是其一个非常重要的特性。使用重载,我们就好比是用相同的词表达多种不同的含义。
方法重载的规则很简单,就是每个重载的方法都必须有一个独一无二的参数类型列表,什么是独一无二的参数类型,即参数个数不同、参数类型不同、参数顺序不同。那么对于以返回值来区分重载方法是否可行呢?
比如下面两个方法,虽然他们有同样的名字和形式,但却很容易区分它们:
Java代码voidf(){}intf(){reurn1;} 只要编译器可以根据语境明确判断出语义,比如在int x =f()中,那么的确可以据此却分重载方法。
不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果,这时你可能会调用方法而忽略其返回值。
所以,如果像下面这样调用方法:f();此时Java如何才能判断该调用哪一个f()呢?
因此,根据方法的返回值来区分重载方法是行不通的。