Since you can either overload or override methods in Java, its important to know what are the rules of overloading and overriding in Java. any overloaded method or overridden method must follow rules of method overloading and method overriding to avoid compile time error and logical error, where you intend to override a method, instead method got overloaded. That is not uncommon and happen several times when Java programmer tries to override equals in Java or overriding compareTo method in Java while implementing Comparable interface, which accepts Object type of argument. From Java 5 onwards which introduces @Override annotation along with Enum, Generics and varargs method you can completely avoid that problem. Anyway, let's see rules of method overloading and rule of method overriding in Java.
Rule of overloading a method in Java
2) return type of method is not part of method signature, so just changing the return type will not overload method in Java. see What is method overloading in Java for code example of these rules,
Overriding Rules in Java
Overriding is completely different than overloading and so it's rules are also different. For terminology, original method is known as overridden method and new method is known as overriding method. Following rules must be followed to correctly override a method in Java :
1) A method can only be written in Sub class, not in same class.
2) overriding method can not throw checked Exception which is higher in hierarchy, than checked Exception thrown by overridden method. For example if overridden method throws IOException or ClassNotfoundException, which are checked Exception, than overriding method can not throw java.lang.Exception because it comes higher in type hierarchy (it's super class of IOException and ClassNotFoundExcepiton).
3) overriding method can not reduce access of overridden method. It means if overridden method is defined as public than overriding method can not be protected or package private.
4) overriding method can increase access of overridden method. this is opposite of earlier rule, according to this if overridden method is declared as protected than overriding method can be protected or public.
5) private, static and final method can not be overridden in Java.