Por que não podemos atribuir um privilégio mais fraco na subclasse?

Eu tenho uma classe que tem um método cujo especificador de acesso por padrão é público. Agora, gostaria de estender essa classe em uma subclasse e quero substituir esse método para ter o especificador de acesso "private". Ao compilar este código, estou recebendo um erro de compilação:

"tentando atribuir privilégios de acesso mais fracos".

Alguém poderia me explicar o que está errado em atribuir privilégios mais fracos em uma subclasse?

Aqui está o código que causou o erro de compilação:

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

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

questionAnswers(7)

yourAnswerToTheQuestion