Почему не возможно перегрузить функцию только путем изменения типа возврата? Это изменится в будущей версии Java?
Между прочим, только для ссылки, действительно ли это возможно в C++?
Вы не можете сделать это на Java и не можете сделать это на C ++. Причина в том, что одного возвращаемого значения недостаточно для компилятора, чтобы определить, какую функцию вызывать:
public int foo() {...}
public float foo() {..}
...
foo(); // which one?
Причина в том, что перегрузки в Java разрешены только для методов с разными сигнатурами.
Возвращаемый тип не является частью сигнатуры метода, поэтому не может использоваться для различения перегрузок.
См. Определение методов из учебников по Java.