¿Por qué tener modificadores de acceso de nivel de clase en lugar de nivel de objeto?

Mientras utilizaba C #, me di cuenta recientemente de que puedo llamar a unFoo funciones privadas del objeto deFoofunciones estáticas, e incluso de otrosFoo objetos. Después de todo lo que he aprendido sobre los modificadores de acceso, esto me suena muy extraño.

Que yo sepa, usted hace que una función sea privada cuando hace algo que es parte de algún tipo de proceso interno. Solo el objeto en sí sabe cuándo usar esas funciones, porque otros objetos no deberían / ​​no pueden controlar el flujo del objeto. ¿Hay alguna razón por la que otros objetos de la misma clase deberían ser excluidos de esta regla bastante sencilla?

Según solicitud, un ejemplo:

public class AClass {
    private void doSomething() { /* Do something here */ }
    public void aFunction() {
        AClass f = new AClass();
        f.doSomething(); // I would have expected this line to cause an access error.
    }
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta