I recently found out that I can have two interfaces, one containing a method with the same signature as a method in the other interface. And I can have an interface or class that implements both of afore-mentioned interfaces. So the descendant class/interface implicitly implements two different methods as one method.
Why is this allowed in Java?
I can see numerous problems arising from this. Eclipse, for example, can only find out about implementations for one interface method, but for the second one it doesn't show any implementations at all. Also, I believe that there would be problems with automatic refactoring, like when you want to change the signature of the method in one of the interfaces and the IDE will be unable to correctly change that signature in all implementations (since they implement two different interfaces, and the IDE cannot tell which interface method the implementation is referring to.)
Why don't just make a compiler error like 'interfaces method names clashes' or something like that?
And then I can have an interface or class that implements both of that interfaces.
Interfaces don't implement anything, they declare or extend other interfaces. Only a class implements a method signature and if it implements the same method signature of a base class then it overrides it.