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