Warum gibt es Zugriffsmodifikatoren auf Klassenebene statt auf Objektebene?

Bei der Verwendung von C # habe ich kürzlich festgestellt, dass ich a aufrufen kannFoo Objekt private Funktionen vonFoo's statische Funktionen und sogar von anderenFoo Objekte. Nach allem, was ich über Zugriffsmodifikatoren gelernt habe, klingt dies für mich sehr seltsam.

Soweit ich weiß, machen Sie eine Funktion privat, wenn sie einen Teil eines internen Prozesses ausführt. Nur das Objekt selbst weiß, wann diese Funktionen verwendet werden sollen, da andere Objekte den Objektfluss nicht steuern sollen / können. Gibt es einen Grund, warum andere Objekte derselben Klasse von dieser ziemlich einfachen Regel ausgenommen werden sollten?

Auf Wunsch ein Beispiel:

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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage