Po co modyfikatory dostępu na poziomie klasy zamiast poziomu obiektu?

Podczas korzystania z C # niedawno zdałem sobie sprawę, że mogę zadzwonić pod numerFoo prywatne funkcje obiektu zFoofunkcje statyczne, a nawet z innychFoo przedmioty. Po wszystkim, czego nauczyłem się o modyfikatorach dostępu, brzmi to dla mnie bardzo dziwnie.

O ile wiem, czynisz funkcję prywatną, gdy robi coś, co jest częścią jakiegoś wewnętrznego procesu. Tylko sam obiekt wie, kiedy korzystać z tych funkcji, ponieważ inne obiekty nie powinny / nie mogą kontrolować przepływu obiektu. Czy jest jakiś powód, dla którego inne obiekty tej samej klasy powinny być wyłączone z tej dość prostej reguły?

Na życzenie przykład:

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.
    }
}

questionAnswers(6)

yourAnswerToTheQuestion