Java - Protected y Default

   
Vista:

Protected y Default

Publicado por Juan (2 intervenciones) el 16/09/2015 21:57:25
Holaa comunidad, me estoy preparando desde casita para el SE 8
y cada vez que hago tests de pruebas tengo el mismo problema, los acces modifiers..Si, me se los rangos de visibilidad de cada uno, pero depende desde como se llame el objeto ya me lia bastante..Hice un ejemplo sencillo para ver si me podriais ayudar, estaria bastante agradecido:

>__


(Con los public no hay problema, los private igual)

En el caso del primer objeto "a", no entiendo porque no se puede llamar al metodo a.protegido(), si supuestamente el modificador de acceso "protected" permite la visibilidad al ser B la subclase de A.

En el segudno caso mas de lo mismo, al ser un objeto A apuntando a B, con mas razon deberia dejar ejecutar el metodo ab.protegido();

Y el ultimo objeto B ya flipo un poco... espero no haber perdido el norte.

Por otro lado, me gustaria recibir algun tipo de recomendacion de como interpretais esos accesos y llamadas, ya que yo le di muchas vueltas y es probable que este muy confuso.

Y despues de haberos leido todo esto, os doy muchas gracias, ya que me estariais ayudando muchisimo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Protected y Default

Publicado por U (1 intervención) el 16/09/2015 22:34:11
PUBLIC:
Este nivel de acceso permite a acceder al elemento desde cualquier clase, independientemente de que esta pertenezca o no al paquete en que se encuentra el elemento.

PRIVATE:
Es el modificador más restrictivo y especifica que los elementos que lo utilizan sólo pueden ser accedidos desde la misma clase en la que se encuentran. Este modificador sólo puede utilizarse sobre los miembros de una clase y sobre interfaces y clases internas, no sobre clases o interfaces de primer nivel, dado que esto no tendría sentido.

PROTECTED:
Indica que los elementos sólo pueden ser accedidos desde su mismo paquete y desde cualquier clase que extienda la clase en que se encuentra, independientemente de si esta se encuentra en el mismo paquete o no. Este modificador, como private, no tiene sentido a nivel de clases o interfaces no internas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Protected y Default

Publicado por Tom (912 intervenciones) el 16/09/2015 23:36:35
Te causaría menos confusion intentar esas pruebas desde un método no estático de la clase B.

Aquí lo deja más o menos claro:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.6.2

"
6.6.2. Details on protected Access

A protected member or constructor of an object may be accessed from outside the package in which it is declared only by code that is responsible for the implementation of that object.
"

Según yo lo entiendo, main() no implementa código de A.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar