Ну, по крайней мере, в .NET вы можете запретить отражение , используя разрешения .NET.
Кроме того, целью уровней видимости в классах и членах класса является не только безопасность доступа. Это также средство для организации и документирования вашего кода: когда вы видите закрытого члена, вы знаете, что он не предназначен для использования вне класса, и, хотя вы можете использовать его с помощью рефлексии, вы обычно не будете делать это так, как он может вызвать неожиданное поведение в вашем приложении.
В любом случае, я нахожу этот вопрос вроде как: "Какова цель дверей, имеющих замки, если я могу разбить их достаточно большим молотком?" : -)