I know I can use reflection to invoke a private method, and to get or set the value of a private variable, but I want to override a method.
public class Supe
You can't override a private method because no other class, including a derived class, can tell that it exists. It's private.
Private methods are implicitly final.
On a related note, a subclass can declare a field or method with the same name as a private field or method in a super class, because from the subclass's point of view, these members do not exist. There's no special relationship between these members.