When you overload, essentially, you are creating a whole new method. As humans, we recognize the fact that the two methods have the same name, but the JVM compiler really doesn't care. It's just bytecode to the compiler.
Where you might be confused is with over-riding. You can't override a final method. A final method is a method that cannot be overridden. Conversely, an abstract method must be overriden, or the extending class must itself be marked as being abstract.
..if it's a private final method you can override it in the subclass!
In this case the sub class doesnt even know about the method in the super class because its private, so its defining a new one of its own that doesnt have to follow overriding rules. For example this is legal: