Java - llamada a un campo de otra clase

 
Vista:
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por jose maria (85 intervenciones) el 10/08/2016 12:19:39
buenas, soy nuevo y utilizo bluej....
tengo la clase A y uno de sus campos lo tengo como protected, ahora bien, en la clase B,en el campo hola ¿puedo hacer esta llamada? ¿tendria que generar metodos get en A?

hola=A.campoA;

gracias
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
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por juanki (131 intervenciones) el 10/08/2016 13:25:55
Hola

Si el campo de la otra clase no es public, tienes que implementar getters/setters para acceder a el.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por jose maria (85 intervenciones) el 10/08/2016 13:43:10
gracias, entonces, exactamente ¿para que sirve el protected? si pongo los campos en private también accedo con los get y set desde otra clase.
muchísimas gracias
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
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por juanki (131 intervenciones) el 10/08/2016 16:01:06
Hola

El protected es por la herencia, si declaras una variable private, la clase hija no podrá acceder a ella, tendrá que usar los gettes/setters. En cambio, si la declaras protected, la clase hija sí podrá acceder a ellas y desde fuera de la clase se verá como si fuese private.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

llamada a un campo de otra clase

Publicado por Tom (1831 intervenciones) el 10/08/2016 16:35:35
Te digo lo mismo que a quien puso la pregunta: estudia los modificadores de acceso en java.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por juanki (131 intervenciones) el 11/08/2016 10:46:13
Hola

Pues si hago copy & paste del segundo párrafo del segundo enlace que has puesto:

-------
Decimos que podría considerarse demasiado restrictivo porque limita el acceso a una subclase como si se tratara de una clase cualquiera, cuando en realidad la relación de una superclase con una subclase es más estrecha que con una clase externa. Por ello en diferentes lenguajes, Java entre ellos, se usa un nivel de acceso intermedio que no es ni public ni private, sino algo intermedio que se denomina como “acceso protegido”, expresado con la palabra clave protected, que significa que las subclases sí pueden tener acceso al campo o método.
----------

Y del cuarto:

----------
La sintaxis para emplear esta palabra clave es análoga a la que usamos con las palabras public y private, con la salvedad de que protected suele usarse cuando se trabaja con herencia. Desde un objeto de una subclase podremos acceder o invocar un campo o método declarado como protected, pero no podemos acceder o invocar a campos o métodos privados de una superclase. Declara un campo de una clase como protected y en un test crea un objeto de la subclase y trata de acceder a ese campo con una invocación directa del tipo interino43.IdProfesor = “54-DY-87”.
----------

No he dicho ninguna locura. ¿Que no mencioné al package? Sigue siendo válida mi respuesta

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

llamada a un campo de otra clase

Publicado por Tom (1831 intervenciones) el 11/08/2016 12:16:12
Cito de tu respuesta:
"En cambio, si la declaras protected, la clase hija sí podrá acceder a ellas y desde fuera de la clase se verá como si fuese private."

Sí, no mencionaste el package (algo importante en java), así que tu respuesta no es correcta. He puesto esos enlaces porque en java esto _no_ es como en C++ y mucha gente lo confunde.

En java, un atributo calificado como protected en una clase es accesible para cualquier otra clase del mismo package y para las subclases (estén o no en el mismo paquete).

En java no hay un modificador de acceso que indique visibllidad exclusiva para las subclases.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por juanki (131 intervenciones) el 11/08/2016 13:19:38
Hola

Veo que pilláis rápido a los que venimos de C++ XD

Pues sí, claro, es importante acordarse del package y, releyendo el primer post, más aun, ya que el usuario habla de clase A y clase B, no habla en ningún momento de herencia.

Personalmente nunca me he topado con un trozo de código que hagan uso del protected en ese sentido (por el package), es más, y es algo que me chocó mucho viniendo de C++, en cualquier artículo o vídeo que veas por ahí, lo normal es hacerlo todo public, no sé el motivo o si es por comodidad, pero para mi es algo sorprendente.

De todas formas, en mi opinión y por lo que he visto por ahí y como dice en el articulo anterior, el uso de protected está sobre todo relacionado con la herencia.

En este tema me gusta la forma en la que se usa en Dart, aunque puedes hacer campos private, la propia guía de estilo te recomienda que no lo hagas y que si en el futuro tienes que modificar la clase y hacer un getter no hay problema, ya que el acceso a un miembro de la clase es indistinguible si se hace directamente o a través de un getter.

Saludos

PD: ¿No se puede hace quote en este foro?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por jose maria (85 intervenciones) el 11/08/2016 13:59:35
gracias por todas vuestras intervenciones....
una discusión con buen rollito siempre viene bien....
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
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

llamada a un campo de otra clase

Publicado por juanki (131 intervenciones) el 11/08/2016 18:06:07
Hombre, eso siempre, "las malas pulgas" ya se las dejamos a nuestro políticos, que de eso gastan lo suyo XD

Aquí lo importante es que hayas resuelto tu duda inicial y que ahora sepas usar los modificadores de acceso.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar