Protegido frente a privado
Acceso público, privado y protegido: todos los programadores están familiarizados con este concepto. Nada especial, trabajamos con ellos a diario. Sin embargo, como programadores de Ruby, ¿conocemos realmente los detalles?
Volveremos a las respuestas correctas al final de este artículo. Por ahora vamos a profundizar en algunos matices del control de acceso público, privado y protegido. Para hacerlo más práctico he preparado un código de ejemplo para jugar. Recomiendo clonar este repo para facilitar la continuación del artículo. Es sólo un archivo. Si quieres pensar primero en la solución, entonces no ejecutes el código.
Puedes ver la clase base Region aquí junto con dos clases hijas: País y Ciudad. City y Country heredan de Region. La herencia se utiliza para demostrar los detalles públicos, privados y protegidos. Al final del archivo, podemos encontrar la parte de inicialización y 4 secciones que discutiremos a continuación. Echa un vistazo al archivo para familiarizarte con el código.
Bien, ¡comencemos! En la tercera sección de la inicialización, se crean los siguientes objetos: wroclaw, san_francisco y poland. Estos objetos se utilizarán para fines de demostración en las próximas secciones. Sugiero tratar todos estos segmentos por separado. Puedes comentar la sección particular antes de pasar a la siguiente. De esta manera, los errores no bloquearán el resto de la salida.
¿Cuál es la diferencia entre los métodos privados y los protegidos?
Tanto los métodos protegidos como los privados no pueden ser llamados desde el exterior de la clase que los define. Los métodos protegidos son accesibles desde la subclase y los métodos privados no. Los métodos privados de la clase definidora pueden ser invocados por cualquier instancia de esa clase. El acceso público es el predeterminado.
¿Cuál es la diferencia entre private y protected en Java con un ejemplo?
La primera e importante diferencia es la accesibilidad, es decir, cualquier cosa pública es accesible a cualquier lugar, cualquier cosa privada es sólo accesible en la clase que se declaran, cualquier cosa protegida es accesible fuera del paquete, pero sólo a las clases hijas y por defecto es accesible sólo dentro del paquete.
¿Cuál es la diferencia entre privado público y protegido?
Si el miembro de la clase se declara como público, entonces se puede acceder a él en cualquier lugar. Si los miembros de la clase se declaran como protegidos, entonces sólo se puede acceder a ellos dentro de la propia clase y por las clases hijas que heredan. Si los miembros de la clase se declaran como privados, sólo se puede acceder a ellos desde la clase que los define.
Modificador de acceso por defecto de Java
Los modificadores de acceso son palabras clave especiales que definen la accesibilidad o el alcance de un miembro. Podemos especificar cómo otro código puede interactuar con métodos o variables específicas dentro o fuera de las clases y paquetes. Como muchos conceptos de programación, los modificadores de acceso son sencillos en la práctica, pero pueden parecer confusos al principio. Una vez que los entiendas, pueden ayudar a que tu código sea más legible y mantenible.Entender la diferencia entre miembrosJava proporciona 4 tipos de modificadores de acceso con diferentes alcances y visibilidad. Cualquier miembro sin ningún especificador es tratado como “Default” o “package-private”.
Vea la siguiente representación gráfica, que le ayudará a sobresalir mejor sobre el alcance de todos los miembros en diferentes casos.Modificadores de acceso y su alcance en JavaEspero que este tutorial ayudó a bajo la diferencia entre los miembros privados, paquete-privado (por defecto), protegidos y públicos. Por favor, pon tus valiosas sugerencias en la caja de comentarios.
Modificadores de acceso Java
En Java, ¿existen reglas claras sobre cuándo utilizar cada uno de los modificadores de acceso, a saber, el predeterminado (paquete privado), el público, el protegido y el privado, al crear una clase y una interfaz y al tratar la herencia?
¿Cuándo se debe utilizar qué? La idea es encapsular para ocultar información. En la medida de lo posible, quieres ocultar a los usuarios el detalle de cómo se hace algo. ¿Por qué? Porque entonces puedes cambiarlos más tarde y no romper el código de nadie. Esto te permite optimizar, refactorizar, rediseñar y corregir errores sin preocuparte de que alguien esté usando ese código que acabas de revisar.
Por lo tanto, la regla general es hacer las cosas sólo tan visibles como sea necesario. Empieza por lo privado y añade más visibilidad cuando sea necesario. Sólo haz público lo que sea necesario que el usuario conozca, cada detalle que hagas público merma tu capacidad de rediseñar el sistema.
Si quieres que los usuarios sean capaces de personalizar los comportamientos, en lugar de hacer públicos los internos para que puedan anularlos, a menudo es una mejor idea meter esas tripas en un objeto y hacer esa interfaz pública. De esta manera, pueden simplemente conectar un nuevo objeto. Por ejemplo, si estuvieras escribiendo un reproductor de CD y quisieras que la parte de “ir a buscar información sobre este CD” fuera personalizable, en lugar de hacer esos métodos públicos pondrías toda esa funcionalidad en su objeto y sólo harías público el getter/setter de tu objeto. De este modo, ser tacaño en la exposición de tus tripas fomenta la buena composición y la separación de intereses.
Privado, público protegido
Una clase define las características y el comportamiento de un objeto.Por ejemplo,si se crea una aplicación de juegos,cada juego al que un usuario puede jugar desde la aplicación puede considerarse como un objeto de la clase Juegos.Cada juego tiene características comunes,como el número de jugadores,la categoría del juego y la puntuación.Estas características se conocen como variables miembro y el comportamiento se especifica mediante métodos . Una clase define las variables miembro y los métodos de los objetos que comparten características comunes. Además, todos los juegos tienen métodos comunes, como el cálculo de la puntuación, el inicio de la partida y la visualización de las instrucciones del juego.
Una subclase de Java es una clase que hereda un método de una superclase (la clase de la que deriva la subclase).Para crear una subclase de otra clase, utilice la cláusula extends en su declaración de clase.Como subclase, su clase hereda las variables miembro y los métodos de su superclase.
Un paquete es una colección de clases. Un paquete proporciona el espacio esencialmente utilizado para organizar las clases que están relacionadas entre sí.Usted puede crear múltiples paquetes para organizar múltiples categorías de clases según el requisito.Una clase sólo puede pertenecer a un paquete.Por ejemplo, un paquete llamado Juego puede ser utilizado para crear y almacenar una clase llamada Juego1.Esto asegurará que la clase Juego1 no entre en conflicto con cualquiera que tenga el mismo nombre y se almacene en otro lugar.