¿Supongo que estás hablando de métodos públicos, privados y protegidos aquí?
Si es así, entonces no existen con fines de seguridad. Existen con el fin de facilitar o garantizar que el software esté modularizado adecuadamente. (Si tienen éxito en eso es un debate que dejaré para otros. Sin embargo, esa es la visión de para qué son).
Supongamos que entrego una biblioteca, luego soy libre de entregar más tarde una versión diferente de la biblioteca y cambiar cosas marcadas como privadas tanto como quiera. Por el contrario, si no hubiera marcado esas cosas como privadas, entonces no podría cambiar ninguna parte interna de mi software porque alguien, en algún lugar, probablemente esté accediendo a él directamente. Claro, en teoría es su culpa por no usar la API documentada. Pero el cliente lo percibirá como mi culpa que mi actualización de software haya roto su software. No quieren excusas, quieren que lo arreglen. Pero si no dejo que tengan acceso para comenzar, entonces mi API es exactamente los métodos públicos que pretendía ser mi API y se evita el problema.
La segunda cosa más probable de la que podría estar hablando es el modelo de seguridad de Java. Si está hablando de eso, la razón por la que existe es que la visión original para Java involucraba a personas que enviaban applets posiblemente no confiables para trabajar interactivamente dentro de programas de terceros (por ejemplo, navegadores). Por lo tanto, el modelo de seguridad estaba destinado a brindar a los usuarios cierta protección contra applets maliciosos. Por lo tanto, la amenaza de seguridad de la que preocuparse y protegerse es que los applets no confiables intenten interactuar con otro software que pueda estar cargado.