Статические методы Java для доступа к частным переменным

У меня сложилось впечатление, что к частным нестатическим переменным можно получить доступ только с помощью методов, вызываемых на объекте, в котором находятся переменные, но это не так. Не мог бы кто-нибудь объяснить причину, по которой следующие компилируются и запускаются?

public class Sandbox {
    private String _privateString = "unmodified";
    public static void setPrivateString(String str, Sandbox s) {
        s._privateString = str;
    }
    public String toString()
    {
        return _privateString;
    }

    public static void main(String[] args) {
        Sandbox s = new Sandbox();
        setPrivateString("modified", s);
        System.out.println(s);
    }
}

Вывод:

modified

РЕДАКТИРОВАТЬ: То же самое верно и в C #.

17
задан T.K. 26 February 2011 в 19:14
поделиться