Why does the compiler give an error message when you reduce the visibility of a method while overriding it in the subclass?