Aprendizaje de Java Algunas veces me enseñaron a usar el modificador de acceso private
para no exponer la "información sensible" a otras clases, como si esto pudiera abrir un agujero de seguridad legítimo. Pero nunca me encontré con una situación en la que restringir la visibilidad de los miembros fuera más que una conveniencia para modelar un programa de forma orientada a objetos.¿Los miembros privados son realmente más "seguros" en Java?
Son private
campos y funciones en las clases de Java realmente más "seguro" que de lo contrario?
EDITAR - Recopilación de las mejores respuestas.
Por qué private
no significa "seguro":
- descompiladores permiten mirada estática en el código de bytes
- reflexión biblioteca permite el acceso en tiempo de ejecución a los miembros privados
Lo private
es bueno para:
- mantenimiento de código debido a forzar el acceso a nivel de método
- modularidad del código al ocultar los detalles de implementación
Acepto las respuestas. Tus profesores no entendieron los modificadores de acceso. No tiene nada que ver con la seguridad. –
Solo un punto: es posible evitar el código peligroso, como la reflexión utilizada para cambiar el nivel de acceso, llamadas a Unsafe, etc. configurando una política para el administrador de seguridad de Java. http://docs.oracle.com/javase/7/docs/api/java/security/Policy.html – kaqqao