比如两个方法 void f() {}
int f() {}
从我们人的角度,我们很容易去区分这是两个不同的方法。但是编译器为什么就不能做出区分呢?
通常我们在调用一个方法时,调用形式是:对象引用.f() ,不需要标明方法的返回类型,并且在某些情况下
调用方法并不是为了取得一个返回值,而是为了得到这个方法产生的副作用结果,这时甚至没有一个对象来
接收方法的返回值,这时候编译器就可能傻了,它不会联系上下文,更不知道我们想要的输出结果,它只会检查语法。
所以不能根据返回值来重载一个方法。
这是个人的理解,欢迎补充,和更正。
|