¿Por qué no podemos asignar privilegios más débiles en la subclase

Tengo una clase que tiene un método cuyo especificador de acceso por defecto es público. Ahora, me gustaría extender esta clase en una subclase y quiero reemplazar este método para tener el especificador de acceso "privado". Al compilar este código, aparece un error de compilación:

"intentando asignar privilegios de acceso más débiles".

¿Podría alguien explicarme qué hay de malo en asignar privilegios más débiles en una subclase?

Aquí está el código que causó el error de compilación:

class Superclass 
{
    void foo() 
    {
        System.out.println("Superclass.foo");
    }
}

class Subclass extends Superclass 
{
    private void foo() 
    {
        System.out.println("Subclass.foo");
    }
}

Respuestas a la pregunta(7)

Su respuesta a la pregunta