¿Cuál es la diferencia entre público, protegido, paquete privado y privado en Java?
Frecuentes
Visto 2,233 veces
3309
En Java, ¿existen reglas claras sobre cuándo usar cada uno de los modificadores de acceso, es decir, el predeterminado (paquete privado), public
, protected
y private
, mientras hace class
y interface
y ocuparse de la herencia?
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java private public protected access-modifiers or haz tu propia pregunta.
private
se esconde de otras clases dentro del paquete.public
expone a clases fuera del paquete.protected
es una versión depublic
restringido solo a subclases. - Museful@Tennenrishin - No; contrario a C ++, en Java
protected
hace que el método también sea accesible desde todo el paquete. Esta estupidez en el modelo de visibilidad de Java rompe el objetivo deprotected
. - Nicolas Barbulesco@Nicolas Es accesible desde el paquete completo, con o sin
protected
. Como acceso modificador, todo lo queprotected
hace es exponer a subclases fuera del paquete. - Museful@tennenrishin - bueno, eso es lo que dijo Nicolas ... y lo estás repitiendo ahora. Lo que dijiste originalmente fue que
protected
- y cito - 'es una versión de público restringida solo a subclases' lo cual no es cierto por su propia admisión ya que protegido también permite el acceso a través de todo el paquete (ergo, no restringir acceso a subclases.) - luis.espinalTambién estoy de acuerdo con Nicolas en que el modo de acceso protegido en Java es una idiotez. Lo que sucedió es que Java combinó los calificadores de restricción de acceso horizontal (enrejado) y vertical. El alcance predeterminado es una restricción horizontal / de celosía, siendo la celosía el paquete. Lo público es otra restricción horizontal donde la celosía es el mundo entero. Privado y (C ++) protegido son verticales. Hubiera sido mejor si tuviéramos un acceso transversal, digamos,
protected-package
para los raros casos en los que realmente lo necesitábamos, dejandoprotected
para ser equivalente a la versión C ++ de protected. - luis.espinal