1.Signature has to be different. Just a difference in return type is not enough.
Accessibility may vary freely.
2.Exception list may vary freely.
3.Just the name is reused. Methods are independent methods. Resolved at compile-time based on method signature.
4.Can call each other by providing appropriate argument list.
5.Methods can be static or non-static. Since the methods are independent, it doesn’t matter. But if two methods have the same signature, declaring one as static and another as non-static does not provide a valid overload. It’s a compile time error.
6.There’s no limit on number of overloaded methods a class can have.