The overriding method Must have the same argument list.
The overriding method Must have the same return type.
The overriding method Must not have a more restrictive access modifier.
The overriding method May have a less restrictive access modifier.
The overriding method Must not throw new or broader checked exceptions.
The overriding method May throw fewer or narrower checked exceptions, or any unchecked exception.
final methods cannot be overridden.
Polymorphic method invocations apply only to overridden instance methods.
Methods can be overridden or overloaded; constructors can be overloaded but not overridden.
Abstract methods must be overridden by the first concrete (non-abstract) subclass.
Only inherited methods may be overridden, and private methods are not inherited.
A subclass uses super.overriddenMethodName() to call the superclass version of an overridden method.
The accessibility of the overriding method must not be more restrictive than the overridden method.
If the overridden method is public, the overriding method must also be public.
If the overridden method is protected, the overriding method must be public or protected.
If the overridden method is package access, the overriding method must be public, package access, or protected.
If the superclass method is private, it is not inherited by its subclasses, and overriding is not an issue.
Legal overridden method access
A default method may be overridden by a default, protected, or public method.
A protected method may be overridden by a protected or public method.
A public method may be overridden only by a public method.
Illegal overridden method access
A default method may not be overridden by a private method.
A protected method may not be overridden by a default or private method.
A public method may not be overridden by a protected, default, or private method.